<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.smt-x.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smtxwiki</id>
	<title>SMTX Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.smt-x.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Smtxwiki"/>
	<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php/Special:Contributions/Smtxwiki"/>
	<updated>2026-04-03T20:02:08Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1112</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1112"/>
		<updated>2026-04-03T15:10:38Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Rebuild search index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== encrypt field (7.26.03) ====&lt;br /&gt;
Encrypt a value using a fieldname. Much faster than CommonInterface.encrypt&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.encryptField(&#039;test&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: encrypted string&lt;br /&gt;
&lt;br /&gt;
==== decrypt field (7.26.03) ====&lt;br /&gt;
Decrypt a value using a fieldname. Much faster than CommonInterface.decrypt&lt;br /&gt;
#first parameter is the encrypted string&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.decryptField(&#039;encryptedstring&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: unencrypted string&lt;br /&gt;
&lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getSspIsInDevelopmentMode (7.26.02) ====&lt;br /&gt;
Whether or not the SSP environment is in development mode&lt;br /&gt;
 CommonInterface.getSspIsInDevelopmentMode();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service (7.26.02) ====&lt;br /&gt;
Duplicates a service, owner will be the same as the service to duplicate&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateService(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service SECURE (7.26.02) ====&lt;br /&gt;
Duplicates a service only of the logged in person has the rights to do this, owner will be the logged in person&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateServiceSecure(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Rebuild search index (7.26.04) ====&lt;br /&gt;
Rebuilds the search index&lt;br /&gt;
 KnowledgeManagementInterface.rebuildSearchIndex();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a JSON object with the nr of elements added to the search index&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1111</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1111"/>
		<updated>2026-04-03T15:10:02Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Search count */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== encrypt field (7.26.03) ====&lt;br /&gt;
Encrypt a value using a fieldname. Much faster than CommonInterface.encrypt&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.encryptField(&#039;test&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: encrypted string&lt;br /&gt;
&lt;br /&gt;
==== decrypt field (7.26.03) ====&lt;br /&gt;
Decrypt a value using a fieldname. Much faster than CommonInterface.decrypt&lt;br /&gt;
#first parameter is the encrypted string&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.decryptField(&#039;encryptedstring&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: unencrypted string&lt;br /&gt;
&lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getSspIsInDevelopmentMode (7.26.02) ====&lt;br /&gt;
Whether or not the SSP environment is in development mode&lt;br /&gt;
 CommonInterface.getSspIsInDevelopmentMode();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service (7.26.02) ====&lt;br /&gt;
Duplicates a service, owner will be the same as the service to duplicate&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateService(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service SECURE (7.26.02) ====&lt;br /&gt;
Duplicates a service only of the logged in person has the rights to do this, owner will be the logged in person&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateServiceSecure(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Rebuild search index ====&lt;br /&gt;
Rebuilds the search index&lt;br /&gt;
 KnowledgeManagementInterface.rebuildSearchIndex();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a JSON object with the nr of elements added to the search index&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1110</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1110"/>
		<updated>2026-03-06T10:20:31Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* decrypt field */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== encrypt field (7.26.03) ====&lt;br /&gt;
Encrypt a value using a fieldname. Much faster than CommonInterface.encrypt&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.encryptField(&#039;test&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: encrypted string&lt;br /&gt;
&lt;br /&gt;
==== decrypt field (7.26.03) ====&lt;br /&gt;
Decrypt a value using a fieldname. Much faster than CommonInterface.decrypt&lt;br /&gt;
#first parameter is the encrypted string&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.decryptField(&#039;encryptedstring&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: unencrypted string&lt;br /&gt;
&lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getSspIsInDevelopmentMode (7.26.02) ====&lt;br /&gt;
Whether or not the SSP environment is in development mode&lt;br /&gt;
 CommonInterface.getSspIsInDevelopmentMode();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service (7.26.02) ====&lt;br /&gt;
Duplicates a service, owner will be the same as the service to duplicate&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateService(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service SECURE (7.26.02) ====&lt;br /&gt;
Duplicates a service only of the logged in person has the rights to do this, owner will be the logged in person&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateServiceSecure(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1109</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1109"/>
		<updated>2026-03-06T10:20:15Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* encrypt field */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== encrypt field (7.26.03) ====&lt;br /&gt;
Encrypt a value using a fieldname. Much faster than CommonInterface.encrypt&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.encryptField(&#039;test&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: encrypted string&lt;br /&gt;
&lt;br /&gt;
==== decrypt field ====&lt;br /&gt;
Decrypt a value using a fieldname. Much faster than CommonInterface.decrypt&lt;br /&gt;
#first parameter is the encrypted string&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.decryptField(&#039;encryptedstring&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: unencrypted string&lt;br /&gt;
&lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getSspIsInDevelopmentMode (7.26.02) ====&lt;br /&gt;
Whether or not the SSP environment is in development mode&lt;br /&gt;
 CommonInterface.getSspIsInDevelopmentMode();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service (7.26.02) ====&lt;br /&gt;
Duplicates a service, owner will be the same as the service to duplicate&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateService(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service SECURE (7.26.02) ====&lt;br /&gt;
Duplicates a service only of the logged in person has the rights to do this, owner will be the logged in person&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateServiceSecure(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1108</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1108"/>
		<updated>2026-03-06T10:15:22Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* decrypts string */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== encrypt field ====&lt;br /&gt;
Encrypt a value using a fieldname. Much faster than CommonInterface.encrypt&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.encryptField(&#039;test&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: encrypted string&lt;br /&gt;
&lt;br /&gt;
==== decrypt field ====&lt;br /&gt;
Decrypt a value using a fieldname. Much faster than CommonInterface.decrypt&lt;br /&gt;
#first parameter is the encrypted string&lt;br /&gt;
#second parameter is the fieldname (eg: name, or bankaccount)&lt;br /&gt;
 CommonInterface.decryptField(&#039;encryptedstring&#039;, &#039;myfield&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: unencrypted string&lt;br /&gt;
&lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getSspIsInDevelopmentMode (7.26.02) ====&lt;br /&gt;
Whether or not the SSP environment is in development mode&lt;br /&gt;
 CommonInterface.getSspIsInDevelopmentMode();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service (7.26.02) ====&lt;br /&gt;
Duplicates a service, owner will be the same as the service to duplicate&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateService(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service SECURE (7.26.02) ====&lt;br /&gt;
Duplicates a service only of the logged in person has the rights to do this, owner will be the logged in person&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateServiceSecure(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1107</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1107"/>
		<updated>2026-02-06T09:56:23Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Rebuild the search indexes (7.23.07) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getSspIsInDevelopmentMode (7.26.02) ====&lt;br /&gt;
Whether or not the SSP environment is in development mode&lt;br /&gt;
 CommonInterface.getSspIsInDevelopmentMode();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service (7.26.02) ====&lt;br /&gt;
Duplicates a service, owner will be the same as the service to duplicate&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateService(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Duplicate service SECURE (7.26.02) ====&lt;br /&gt;
Duplicates a service only of the logged in person has the rights to do this, owner will be the logged in person&lt;br /&gt;
#first parameter: serviceguid to duplicate&lt;br /&gt;
 ServiceCatalogInterface.duplicateServiceSecure(&amp;quot;theguid&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the guid of the new service&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1106</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1106"/>
		<updated>2026-02-06T09:54:34Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* getSspEnvironmentName (7.22.06) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getSspIsInDevelopmentMode (7.26.02) ====&lt;br /&gt;
Whether or not the SSP environment is in development mode&lt;br /&gt;
 CommonInterface.getSspIsInDevelopmentMode();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1105</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1105"/>
		<updated>2026-01-21T15:54:54Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert URL to PDF and return as base64 (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1104</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1104"/>
		<updated>2026-01-21T15:54:45Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert HTML to PDF and return as base64 (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1103</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1103"/>
		<updated>2026-01-21T15:54:36Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert URL to PDF and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1102</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1102"/>
		<updated>2026-01-21T15:54:20Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert HTML to PDF and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight, 7.26.02: EmbedFonts, HeaderHtml, HeaderHeight, HeaderShowOnFirstPage, FooterHtml, FooterHeight, FooterShowOnFirstPage, EmbedTextFonts, PageNumberingLocation (Header or Foooter), PageNumberingPositionX, PageNumberingPositionY, PageNumberingWidth, PageNumberingHeight, PageNumberingTextFormat (This is page &amp;amp;p; of &amp;amp;P;), PageNumberingFontName, PageNumberingFontSize, PageNumberingTextColor, PageNumberingHorizontalTextAlign (Left, Center, Right)&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1101</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1101"/>
		<updated>2026-01-05T15:19:18Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Search processes SECURE (7.23.08) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get list of possible processes for delegation (7.26.01) ====&lt;br /&gt;
Returns the list of processes that the user is able to add delegation for&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 WorkflowInterface.getPossibleProcessesForDelegationForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, title in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1100</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1100"/>
		<updated>2026-01-05T15:15:37Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Checks if the logged in person is an admin (7.22.06) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role (7.26.01) === &lt;br /&gt;
#first parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRole(&#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified app role in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: app role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasAppRoleFromStudioApp(15, &#039;App role name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the app role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRole([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyAppRoleFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles (7.26.01) === &lt;br /&gt;
#first parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRoles([&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified app roles in a specific studio app (7.26.01) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: array of app role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllAppRolesFromStudioApp(15, [&#039;App role 1&#039;, &#039;App role 2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the app roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1099</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1099"/>
		<updated>2026-01-05T15:10:30Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Checks if the logged in person is logged in via impersonation (7.25.05) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1098</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1098"/>
		<updated>2026-01-05T15:09:28Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* getOutOfOfficeSettingsForPerson (7.26.01) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Saves the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: object with out of office settngs (fromsspdate, tosspdate, persons (array of objects with property id))&lt;br /&gt;
 CommonInterface.saveOutOfOfficeSettingsForPerson(1, { fromsspdate: &amp;quot;20260101&amp;quot;, tosspdate: &amp;quot;20260201&amp;quot;, persons: [ {id: 2}, {id: 3} ] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1097</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1097"/>
		<updated>2026-01-05T15:06:41Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* deleteDelegateForPerson (7.26.01) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned in the object by the getDelegatesForPerson method or saveDelegateForPerson)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1096</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1096"/>
		<updated>2026-01-05T15:05:58Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* getAllPersons (7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getDelegatesForPerson (7.26.01) ====&lt;br /&gt;
Get the delegates for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getDelegatesForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== saveDelegateForPerson (7.26.01) ====&lt;br /&gt;
Saves a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: delegate properties (object with properties id, type (can be Workflow or MyItems) and delegateperson (id), in case type is Workflow: process (id, name), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions))&lt;br /&gt;
 CommonInterface.saveDelegateForPerson(1, { type: &amp;quot;Workflow&amp;quot;, delegateperson: { id: 2 }, process: null });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the saved object with properties id, type (can be Workflow or MyItems) and delegateperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), in case type is Workflow: process (id, name, title), permanent, emailoption (IStillWantToReceiveACopy, IWantToBeIncludedAsCC, IDontWantToReceiveAnyEmails), showinmyactions) in JSON&lt;br /&gt;
&lt;br /&gt;
==== deleteDelegateForPerson (7.26.01) ====&lt;br /&gt;
Remove a delegate for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
#second parameter: record id (as returned by the getDelegatesForPerson method)&lt;br /&gt;
 CommonInterface.deleteDelegateForPerson(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getOutOfOfficeSettingsForPerson (7.26.01) ====&lt;br /&gt;
Get the out of office settings for a person&lt;br /&gt;
#first parameter: person id&lt;br /&gt;
 CommonInterface.getOutOfOfficeSettingsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties fromdateformatted, fromsspdate, todateformatted, tosspdate and persons (array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1095</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1095"/>
		<updated>2026-01-05T14:30:21Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Search workflow tickets count (7.22.06) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1094</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1094"/>
		<updated>2026-01-05T14:30:07Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Search workflow tickets count SECURE (7.22.06) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1093</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1093"/>
		<updated>2026-01-05T14:29:44Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Search workflow tickets SECURE (7.22.06) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1092</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1092"/>
		<updated>2026-01-05T14:29:29Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Search workflow tickets (7.22.06) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo, since 7.26.01: RequestedForId, TicketCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestorCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue), RequestedForCustomFields (array of objects with properties: FieldName, FilterOperator, FieldValue))&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1091</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1091"/>
		<updated>2025-12-05T11:02:34Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Check if the logged in person has a service version custom ACL use right (7.24.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublished(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties result and message in JSON&lt;br /&gt;
&lt;br /&gt;
==== Check if the service can be published as boolean (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#optional second parameter: object with possible properties CheckIfOtherRequestsAreActive&lt;br /&gt;
 ServiceCatalogInterface.serviceCanBePublishedAsBoolean(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service can be published, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has essential data missing (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasEssentialDataMissing(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has essential data missing, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the service has validation errors (7.25.12) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.serviceHasValidationErrors(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the service has validation errors, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1090</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1090"/>
		<updated>2025-12-05T10:29:04Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Delete all parameter entries SECURE (since 7.23.07) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Clear the parameter cache (since 7.25.12) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.clearParameterCache(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  nothing&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=Check_if_a_user_has_a_certain_Role&amp;diff=1089</id>
		<title>Check if a user has a certain Role</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=Check_if_a_user_has_a_certain_Role&amp;diff=1089"/>
		<updated>2025-11-12T14:21:08Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: Created page with &amp;quot;Via a webservice, you can check if the logged in user has a certain role. You need the webservice called &amp;#039;Logged in person has role&amp;#039; (DEV: https://dev.ssp7.smt-x.com/Common/Admin/WsCallAddEdit.aspx?genericid=495)  var rolename = g_fieldvalues.filter(function (fld) { return fld.name === &amp;quot;RoleName&amp;quot;; }).map(function (fld) { return fld.value; }).join(&amp;quot;&amp;quot;); return StudioInterface.loggedInPersonHasRole(rolename);   You can then use this Webservice in a form, with a hidden field...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Via a webservice, you can check if the logged in user has a certain role. You need the webservice called &#039;Logged in person has role&#039; (DEV: https://dev.ssp7.smt-x.com/Common/Admin/WsCallAddEdit.aspx?genericid=495)&lt;br /&gt;
&lt;br /&gt;
var rolename = g_fieldvalues.filter(function (fld) { return fld.name === &amp;quot;RoleName&amp;quot;; }).map(function (fld) { return fld.value; }).join(&amp;quot;&amp;quot;);&lt;br /&gt;
return StudioInterface.loggedInPersonHasRole(rolename);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can then use this Webservice in a form, with a hidden field.&lt;br /&gt;
&lt;br /&gt;
In the example below, we check if the user has the role &#039;EC&#039;:&lt;br /&gt;
&lt;br /&gt;
WebserviceLookup(&#039;Logged in person has role&#039;, &#039;&#039;, &#039;RoleName&#039;, &#039;EC&#039;)&lt;br /&gt;
&lt;br /&gt;
This will return &#039;true&#039; or &#039;false&#039;.&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=FormTips&amp;diff=1088</id>
		<title>FormTips</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=FormTips&amp;diff=1088"/>
		<updated>2025-11-12T14:20:13Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[AllFunctions|All Calculation functions]]&lt;br /&gt;
&lt;br /&gt;
[[Calculations|Calculations on fields]]&lt;br /&gt;
&lt;br /&gt;
[[RegularExpressions|Tips to use regular expressions]]&lt;br /&gt;
&lt;br /&gt;
[[UsingIIF|Example how to use IIF]]&lt;br /&gt;
&lt;br /&gt;
[[checkfordifferences|Check if a field is different from a given value - or empty]]&lt;br /&gt;
&lt;br /&gt;
[[Datacalculation|Calculations between dates]]&lt;br /&gt;
&lt;br /&gt;
[[Numberformat|Set the format of a number]]&lt;br /&gt;
&lt;br /&gt;
[[Classes|Set the CSS class for a field]]&lt;br /&gt;
&lt;br /&gt;
[[HTMLFormatting|Fake Headers]]&lt;br /&gt;
&lt;br /&gt;
[[DateFieldSettings|How to set a default date in a form]]&lt;br /&gt;
&lt;br /&gt;
[[Button|How to make a custom button in a form]]&lt;br /&gt;
&lt;br /&gt;
[[NotEmptyFieldSection|How to make a section that is started when a field is not empty]]&lt;br /&gt;
&lt;br /&gt;
[[ListLimitBasedOnValue|How to filter a list, based on a comma seperated value list]]&lt;br /&gt;
&lt;br /&gt;
[[DisplaySearcheableListbox|Display entries of a searcheable listbox (multi-select) on different rows]]&lt;br /&gt;
&lt;br /&gt;
[[DisplayMultiSelectTable|Display selected entries of a multi select list in a HTML table]]&lt;br /&gt;
&lt;br /&gt;
[[DefaultValues|Give a field a default value, using calculations]]&lt;br /&gt;
&lt;br /&gt;
[[NextBusinessDayCalc|Calculate next business day from today]]&lt;br /&gt;
&lt;br /&gt;
[[Actor refresh on step activate]]&lt;br /&gt;
&lt;br /&gt;
[[AdvancedRadioButtons|Show images &amp;amp; HTML in options when using a radiobutton or checklist field]]&lt;br /&gt;
&lt;br /&gt;
[[prefill_Date|Set a default value on a date field, data coming from datastore parameter]]&lt;br /&gt;
&lt;br /&gt;
[[DefaultValuesURL|Set a default value on any field, data coming from link]]&lt;br /&gt;
&lt;br /&gt;
[[TabLinking|Link to another tab in the same form]]&lt;br /&gt;
&lt;br /&gt;
[[BulletedList|How to create a bulletted list in a read-only field]]&lt;br /&gt;
&lt;br /&gt;
[[BulletedListFiles|How to create a bulletted list of uploaded attachments that are stored in a datastore]]&lt;br /&gt;
&lt;br /&gt;
[[Current Date|Show the current date without hours and minutes]]&lt;br /&gt;
&lt;br /&gt;
[[HideSubmit|Hide the SUBMIT button if not all requirements are met]]&lt;br /&gt;
&lt;br /&gt;
[[DatastoreDateAsDefault|Use a data field from a daastore as default value in a date field]]&lt;br /&gt;
&lt;br /&gt;
[[Split Multiselect Values|Split Multiselect Values]]&lt;br /&gt;
&lt;br /&gt;
[[Line breaks in helptexts|Line breaks in helptexts]]&lt;br /&gt;
&lt;br /&gt;
[[FieldTypes in database|Field types in database]]&lt;br /&gt;
&lt;br /&gt;
[[CSS_classes_used|Show CSS classes used]]&lt;br /&gt;
&lt;br /&gt;
[[Print PDF|Print PDF in Form]]&lt;br /&gt;
&lt;br /&gt;
[[Use Main Form Field in subform without naming the mainform|Use Main Form Field in subform without naming the mainform]]&lt;br /&gt;
&lt;br /&gt;
[[AddedRemoved from multi select|Generate a list of items removed from a multi select list]]&lt;br /&gt;
&lt;br /&gt;
[[Redirect Forms|Redirect old version of form to new one]]&lt;br /&gt;
&lt;br /&gt;
[[GRID resizing|Resize column widths on field type Grid]]&lt;br /&gt;
&lt;br /&gt;
[[copy text|Copy all characters from a string before a certain character]]&lt;br /&gt;
&lt;br /&gt;
[[Table Form|Make a form with mulitple tables]]&lt;br /&gt;
&lt;br /&gt;
[[Export to excel|Export a form to excel]]&lt;br /&gt;
&lt;br /&gt;
[[Repeatable Sections|Repeatable Sections]]&lt;br /&gt;
&lt;br /&gt;
[[Repeatable Sections with Multiplier|Repeatable Sections with Multiplier]]&lt;br /&gt;
&lt;br /&gt;
[[IndexOf_SubString|Extract a portion from a field input (like the filename)]]&lt;br /&gt;
&lt;br /&gt;
[[GetXmlPropertyViaUploadField|Extract an XML property from an upload field]]&lt;br /&gt;
&lt;br /&gt;
[[LinkToTicket|Link to a ticket from within a form]]&lt;br /&gt;
&lt;br /&gt;
[[Number formatting forCalculations|Number formatting for calculations]]&lt;br /&gt;
&lt;br /&gt;
[[Export Grid field to Excel in Form|Export Grid field to Excel in Form]]&lt;br /&gt;
&lt;br /&gt;
[[Show popup when a specific value is selected in multi select]]&lt;br /&gt;
&lt;br /&gt;
[[See where a form isused as a subform]]&lt;br /&gt;
&lt;br /&gt;
[[Find form based on internal label]]&lt;br /&gt;
&lt;br /&gt;
[[Calculate the total size in Kb of all uploaded files]]&lt;br /&gt;
&lt;br /&gt;
[[Get form field values in javascript execution block]]&lt;br /&gt;
&lt;br /&gt;
[[Make Grid look better with multiple lines]]&lt;br /&gt;
&lt;br /&gt;
[[Transpose datastore columns into rows with linebreaks]]&lt;br /&gt;
&lt;br /&gt;
[[Calculate the birthdate of a 18 year old person]]&lt;br /&gt;
&lt;br /&gt;
[[Check if a user has a certain Role]]&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=Main_Page&amp;diff=1087</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=Main_Page&amp;diff=1087"/>
		<updated>2025-11-12T10:51:28Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Service Catalog Online Manual */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the SMTX Wiki Portal, the source to find all company and product related information. &lt;br /&gt;
&lt;br /&gt;
==[[Service Catalog Online Manual]]==&lt;br /&gt;
https://docs.smt-x.com/&lt;br /&gt;
&lt;br /&gt;
==[[TroubleshootingInstallation|Troubleshooting after installation]] SSP not running after installation, see this section for most common errors==&lt;br /&gt;
[[GeneralError|General Error message]]&lt;br /&gt;
&lt;br /&gt;
[[FormError|Error messages in forms]]&lt;br /&gt;
&lt;br /&gt;
[[ServerErrorCommon|Server Error in &#039;\Common&#039; Application]]&lt;br /&gt;
&lt;br /&gt;
[[ErrorProcessImport|Errors in process import]]&lt;br /&gt;
&lt;br /&gt;
==[[Projects|Project tips]] Learn and share knowledge gained during project implementations==&lt;br /&gt;
[[TopicTips|Tips to create Topics]]&lt;br /&gt;
&lt;br /&gt;
[[FormTips|Tips to create forms]]&lt;br /&gt;
&lt;br /&gt;
[[DataStoreTips|Tips to create Datastore Parameters]]&lt;br /&gt;
&lt;br /&gt;
[[ProcessTips|Tips to create processes]]&lt;br /&gt;
&lt;br /&gt;
[[SettingsTips|Tips about General Settings]]&lt;br /&gt;
&lt;br /&gt;
[[AllFunctions|Tips to use NCALC calculations]]&lt;br /&gt;
&lt;br /&gt;
[[JavaScript|JavaScript functions explained]]&lt;br /&gt;
&lt;br /&gt;
[[ReactComponents|Using React components in Studio applications]]&lt;br /&gt;
&lt;br /&gt;
[[DBTips|Tips to execute database queries &amp;amp; work with Datastore in Processes]]&lt;br /&gt;
&lt;br /&gt;
[[EmailTips|Tips to create email templates]]&lt;br /&gt;
&lt;br /&gt;
[[ViewTips|Tips to create Views]]&lt;br /&gt;
&lt;br /&gt;
[[InboundEmail|Tips regarding inbound email]]&lt;br /&gt;
&lt;br /&gt;
[[Shops|Tips to create Shops]]&lt;br /&gt;
&lt;br /&gt;
[[WebServicesTips|Using generic web services]]&lt;br /&gt;
&lt;br /&gt;
[[Customer Journey Configuration]]&lt;br /&gt;
&lt;br /&gt;
[[Retrieve Group membership]]&lt;br /&gt;
&lt;br /&gt;
[[SSP Studio Tips]]&lt;br /&gt;
&lt;br /&gt;
==[[Service Catalog implementation tips]]==&lt;br /&gt;
[[Export published services to JSON]]&lt;br /&gt;
&lt;br /&gt;
[[Search through published services]]&lt;br /&gt;
&lt;br /&gt;
[[Initiate review cycles]]&lt;br /&gt;
&lt;br /&gt;
[[Quick publication, without approvals]]&lt;br /&gt;
&lt;br /&gt;
[[Field Visibility examples]]&lt;br /&gt;
&lt;br /&gt;
[[Field Validation examples]]&lt;br /&gt;
&lt;br /&gt;
[[External App Fields]]&lt;br /&gt;
&lt;br /&gt;
[[Get Unique IDs of Group Members]]&lt;br /&gt;
&lt;br /&gt;
[[Lucene search Engine]]&lt;br /&gt;
&lt;br /&gt;
[[Service Review Meetings]]&lt;br /&gt;
&lt;br /&gt;
[[ACL - make a tab temporarily editable after publication]]&lt;br /&gt;
&lt;br /&gt;
[[Fetch date last uploaded document in a specific folder]]&lt;br /&gt;
&lt;br /&gt;
[[Update Yes/No field for all documents in a service]]&lt;br /&gt;
&lt;br /&gt;
[[Redirect always to Service Catalogue]]&lt;br /&gt;
&lt;br /&gt;
==[[SMTX Webservices|SMTX Process Management Platform Web Services]] Connect with PMP through Web Services==&lt;br /&gt;
[[Workflow Update Variable|Web Service to update process variables]]&lt;br /&gt;
&lt;br /&gt;
[[Workflow External Reference Acknoledgement|Ticketing Task - external ticket ID acknowledgement]]&lt;br /&gt;
&lt;br /&gt;
[[Ticketing-Status|Ticketing status and semantic values]]&lt;br /&gt;
&lt;br /&gt;
[[Workflow Update Text|Ticketing Task - external update]]&lt;br /&gt;
&lt;br /&gt;
[[Service Catalogue Webservices]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[LDAP|LDAP configuration]]==&lt;br /&gt;
[[Using LDAPS]]&lt;br /&gt;
&lt;br /&gt;
[[Setting password in LDAP person sync]]&lt;br /&gt;
&lt;br /&gt;
==[[DBScripts|Database scripting]] Go beyond standard configuration and learn how to script the database==&lt;br /&gt;
[[Cleaning|Cleaning of platform]]&lt;br /&gt;
&lt;br /&gt;
[[Transpose|Converting rows into columns]]&lt;br /&gt;
&lt;br /&gt;
[[ReferenceTips|Tips to create references (Knowledge management, ...)]]&lt;br /&gt;
&lt;br /&gt;
[[TicketsPerMonth|Query the number of tickets per month]]&lt;br /&gt;
&lt;br /&gt;
[[Generic Queries|Generic queries on the SSP database]]&lt;br /&gt;
&lt;br /&gt;
[[Kill database connections|Kill database connections]]&lt;br /&gt;
&lt;br /&gt;
[[Set SQL Server Isolation Level|Set SQL Server Isolation Level]]&lt;br /&gt;
&lt;br /&gt;
[[Close workflow tickets via query]]&lt;br /&gt;
&lt;br /&gt;
[[Queries related to the datastore parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Clear Ticketing Cache|Clear Ticketing cache]]&lt;br /&gt;
&lt;br /&gt;
[[Query approver votes of approval steps]]&lt;br /&gt;
&lt;br /&gt;
[[Query unused forms datastores processes]]&lt;br /&gt;
&lt;br /&gt;
==[[CSS|CSS classes (SSP7)]] Specific CSS classes per reference==&lt;br /&gt;
[[FSC|Friesland Campina]]&lt;br /&gt;
&lt;br /&gt;
[[Float_Cancel_Right|Float Cancel button to the right]]&lt;br /&gt;
&lt;br /&gt;
[[Line Breaks HTML Editor|Get proper &amp;lt;p&amp;gt; linebreaks in HTML editor]]&lt;br /&gt;
&lt;br /&gt;
[[Custom fonts|Add custom fonts to the stylesheet]]&lt;br /&gt;
&lt;br /&gt;
[[Messages box displayed when multiplier active|Messages tab is visible while multiplier step is displayed]]&lt;br /&gt;
&lt;br /&gt;
==To upload a file or image: LOG IN TO THE WIKI==&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=Steps_to_remove_forms_and_processes&amp;diff=1086</id>
		<title>Steps to remove forms and processes</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=Steps_to_remove_forms_and_processes&amp;diff=1086"/>
		<updated>2025-11-10T13:17:52Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: Created page with &amp;quot;== How to Delete a Form and Its Related Data ==  To delete a form and its associated data, follow these steps:  # Go to the &amp;#039;&amp;#039;&amp;#039;Release Manager&amp;#039;&amp;#039;&amp;#039; and find your form. # Click the &amp;#039;&amp;#039;&amp;#039;Add Relations&amp;#039;&amp;#039;&amp;#039; button. # You will now see all linked processes and parameters. # Go to the same &amp;#039;&amp;#039;&amp;#039;Add Relations&amp;#039;&amp;#039;&amp;#039; button under &amp;#039;&amp;#039;&amp;#039;Processes&amp;#039;&amp;#039;&amp;#039; and click it again. # You now have an overview of all related components.  For each process: # Check whether any &amp;#039;&amp;#039;&amp;#039;email templates&amp;#039;&amp;#039;&amp;#039; are in use....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to Delete a Form and Its Related Data ==&lt;br /&gt;
&lt;br /&gt;
To delete a form and its associated data, follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to the &#039;&#039;&#039;Release Manager&#039;&#039;&#039; and find your form.&lt;br /&gt;
# Click the &#039;&#039;&#039;Add Relations&#039;&#039;&#039; button.&lt;br /&gt;
# You will now see all linked processes and parameters.&lt;br /&gt;
# Go to the same &#039;&#039;&#039;Add Relations&#039;&#039;&#039; button under &#039;&#039;&#039;Processes&#039;&#039;&#039; and click it again.&lt;br /&gt;
# You now have an overview of all related components.&lt;br /&gt;
&lt;br /&gt;
For each process:&lt;br /&gt;
# Check whether any &#039;&#039;&#039;email templates&#039;&#039;&#039; are in use.&lt;br /&gt;
# Verify if there are any &#039;&#039;&#039;Word-generated documents&#039;&#039;&#039; using templates that can be deleted.&lt;br /&gt;
# If the process contains &#039;&#039;&#039;email steps&#039;&#039;&#039;, confirm whether these use templates.  &lt;br /&gt;
  These templates may also be removed.&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=Cleaning&amp;diff=1085</id>
		<title>Cleaning</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=Cleaning&amp;diff=1085"/>
		<updated>2025-11-10T13:15:04Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cleaning of platform&lt;br /&gt;
&lt;br /&gt;
[[Steps to remove forms and processes|Steps to remove forms and processes]]&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=Cleaning&amp;diff=1084</id>
		<title>Cleaning</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=Cleaning&amp;diff=1084"/>
		<updated>2025-11-10T13:14:21Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: Created page with &amp;quot;Cleaning of platform  --Steps to remove forms and processes&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cleaning of platform&lt;br /&gt;
&lt;br /&gt;
--Steps to remove forms and processes&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=Main_Page&amp;diff=1083</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=Main_Page&amp;diff=1083"/>
		<updated>2025-11-10T13:13:13Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the SMTX Wiki Portal, the source to find all company and product related information. &lt;br /&gt;
&lt;br /&gt;
==[[Service Catalog Online Manual]]==&lt;br /&gt;
https://app.gitbook.com/@smtx-1/s/smtx-online-documentation/&lt;br /&gt;
&lt;br /&gt;
==[[TroubleshootingInstallation|Troubleshooting after installation]] SSP not running after installation, see this section for most common errors==&lt;br /&gt;
[[GeneralError|General Error message]]&lt;br /&gt;
&lt;br /&gt;
[[FormError|Error messages in forms]]&lt;br /&gt;
&lt;br /&gt;
[[ServerErrorCommon|Server Error in &#039;\Common&#039; Application]]&lt;br /&gt;
&lt;br /&gt;
[[ErrorProcessImport|Errors in process import]]&lt;br /&gt;
&lt;br /&gt;
==[[Projects|Project tips]] Learn and share knowledge gained during project implementations==&lt;br /&gt;
[[TopicTips|Tips to create Topics]]&lt;br /&gt;
&lt;br /&gt;
[[FormTips|Tips to create forms]]&lt;br /&gt;
&lt;br /&gt;
[[DataStoreTips|Tips to create Datastore Parameters]]&lt;br /&gt;
&lt;br /&gt;
[[ProcessTips|Tips to create processes]]&lt;br /&gt;
&lt;br /&gt;
[[SettingsTips|Tips about General Settings]]&lt;br /&gt;
&lt;br /&gt;
[[AllFunctions|Tips to use NCALC calculations]]&lt;br /&gt;
&lt;br /&gt;
[[JavaScript|JavaScript functions explained]]&lt;br /&gt;
&lt;br /&gt;
[[ReactComponents|Using React components in Studio applications]]&lt;br /&gt;
&lt;br /&gt;
[[DBTips|Tips to execute database queries &amp;amp; work with Datastore in Processes]]&lt;br /&gt;
&lt;br /&gt;
[[EmailTips|Tips to create email templates]]&lt;br /&gt;
&lt;br /&gt;
[[ViewTips|Tips to create Views]]&lt;br /&gt;
&lt;br /&gt;
[[InboundEmail|Tips regarding inbound email]]&lt;br /&gt;
&lt;br /&gt;
[[Shops|Tips to create Shops]]&lt;br /&gt;
&lt;br /&gt;
[[WebServicesTips|Using generic web services]]&lt;br /&gt;
&lt;br /&gt;
[[Customer Journey Configuration]]&lt;br /&gt;
&lt;br /&gt;
[[Retrieve Group membership]]&lt;br /&gt;
&lt;br /&gt;
[[SSP Studio Tips]]&lt;br /&gt;
&lt;br /&gt;
==[[Service Catalog implementation tips]]==&lt;br /&gt;
[[Export published services to JSON]]&lt;br /&gt;
&lt;br /&gt;
[[Search through published services]]&lt;br /&gt;
&lt;br /&gt;
[[Initiate review cycles]]&lt;br /&gt;
&lt;br /&gt;
[[Quick publication, without approvals]]&lt;br /&gt;
&lt;br /&gt;
[[Field Visibility examples]]&lt;br /&gt;
&lt;br /&gt;
[[Field Validation examples]]&lt;br /&gt;
&lt;br /&gt;
[[External App Fields]]&lt;br /&gt;
&lt;br /&gt;
[[Get Unique IDs of Group Members]]&lt;br /&gt;
&lt;br /&gt;
[[Lucene search Engine]]&lt;br /&gt;
&lt;br /&gt;
[[Service Review Meetings]]&lt;br /&gt;
&lt;br /&gt;
[[ACL - make a tab temporarily editable after publication]]&lt;br /&gt;
&lt;br /&gt;
[[Fetch date last uploaded document in a specific folder]]&lt;br /&gt;
&lt;br /&gt;
[[Update Yes/No field for all documents in a service]]&lt;br /&gt;
&lt;br /&gt;
[[Redirect always to Service Catalogue]]&lt;br /&gt;
&lt;br /&gt;
==[[SMTX Webservices|SMTX Process Management Platform Web Services]] Connect with PMP through Web Services==&lt;br /&gt;
[[Workflow Update Variable|Web Service to update process variables]]&lt;br /&gt;
&lt;br /&gt;
[[Workflow External Reference Acknoledgement|Ticketing Task - external ticket ID acknowledgement]]&lt;br /&gt;
&lt;br /&gt;
[[Ticketing-Status|Ticketing status and semantic values]]&lt;br /&gt;
&lt;br /&gt;
[[Workflow Update Text|Ticketing Task - external update]]&lt;br /&gt;
&lt;br /&gt;
[[Service Catalogue Webservices]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[LDAP|LDAP configuration]]==&lt;br /&gt;
[[Using LDAPS]]&lt;br /&gt;
&lt;br /&gt;
[[Setting password in LDAP person sync]]&lt;br /&gt;
&lt;br /&gt;
==[[DBScripts|Database scripting]] Go beyond standard configuration and learn how to script the database==&lt;br /&gt;
[[Cleaning|Cleaning of platform]]&lt;br /&gt;
&lt;br /&gt;
[[Transpose|Converting rows into columns]]&lt;br /&gt;
&lt;br /&gt;
[[ReferenceTips|Tips to create references (Knowledge management, ...)]]&lt;br /&gt;
&lt;br /&gt;
[[TicketsPerMonth|Query the number of tickets per month]]&lt;br /&gt;
&lt;br /&gt;
[[Generic Queries|Generic queries on the SSP database]]&lt;br /&gt;
&lt;br /&gt;
[[Kill database connections|Kill database connections]]&lt;br /&gt;
&lt;br /&gt;
[[Set SQL Server Isolation Level|Set SQL Server Isolation Level]]&lt;br /&gt;
&lt;br /&gt;
[[Close workflow tickets via query]]&lt;br /&gt;
&lt;br /&gt;
[[Queries related to the datastore parameters]]&lt;br /&gt;
&lt;br /&gt;
[[Clear Ticketing Cache|Clear Ticketing cache]]&lt;br /&gt;
&lt;br /&gt;
[[Query approver votes of approval steps]]&lt;br /&gt;
&lt;br /&gt;
[[Query unused forms datastores processes]]&lt;br /&gt;
&lt;br /&gt;
==[[CSS|CSS classes (SSP7)]] Specific CSS classes per reference==&lt;br /&gt;
[[FSC|Friesland Campina]]&lt;br /&gt;
&lt;br /&gt;
[[Float_Cancel_Right|Float Cancel button to the right]]&lt;br /&gt;
&lt;br /&gt;
[[Line Breaks HTML Editor|Get proper &amp;lt;p&amp;gt; linebreaks in HTML editor]]&lt;br /&gt;
&lt;br /&gt;
[[Custom fonts|Add custom fonts to the stylesheet]]&lt;br /&gt;
&lt;br /&gt;
[[Messages box displayed when multiplier active|Messages tab is visible while multiplier step is displayed]]&lt;br /&gt;
&lt;br /&gt;
==To upload a file or image: LOG IN TO THE WIKI==&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1082</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1082"/>
		<updated>2025-11-06T11:02:25Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Person and person group (7.21.07) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05), email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive, email (7.25.11) in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1081</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1081"/>
		<updated>2025-11-04T14:19:23Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Add a public message within ticketing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
#optional sixth parameter: boolean: stop the clock (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1080</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1080"/>
		<updated>2025-11-04T14:13:58Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Get default list of people to be notified for public message within ticketing (7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1079</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1079"/>
		<updated>2025-10-04T10:37:25Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* getPersonsForPersonGroup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON; since 7.25.10: groupemailenabled&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1078</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1078"/>
		<updated>2025-10-04T10:35:06Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Get default list of people to be notified for public message within ticketing (7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add an end user message (workflow) (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64&lt;br /&gt;
#optional fifth parameter: array of people to be notified&lt;br /&gt;
 WorkflowInterface.addMessageAsEndUser(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1077</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1077"/>
		<updated>2025-10-04T10:33:58Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Add a public note within ticketing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a private note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1076</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1076"/>
		<updated>2025-10-04T10:33:36Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Add a private message within ticketing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a public message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Get default list of people to be notified for public message within ticketing (7.25.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.getPublicMessageDefaultNotifies(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of default people to be notified in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1075</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1075"/>
		<updated>2025-10-04T10:32:38Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Add a private message within ticketing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1074</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1074"/>
		<updated>2025-10-04T10:32:03Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Add a public note within ticketing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
#optional fifth parameter: array of people to be notified (7.25.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1073</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1073"/>
		<updated>2025-10-04T10:28:51Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Creates a ZIP file and return as base64 (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvancedInBase64([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1072</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1072"/>
		<updated>2025-10-04T10:27:55Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Creates a ZIP file and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1071</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1071"/>
		<updated>2025-10-04T10:27:32Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Creates a ZIP file and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
CommonInterface.createZipFileAdvanced([{ name: &amp;quot;test/test.pdf&amp;quot;, content: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;) }, { name: &amp;quot;test/test.xlsx&amp;quot;, content: CommonInterface.generateExcelInBase64([{name: &amp;quot;one&amp;quot;, value: 1}, {name: &amp;quot;two&amp;quot;, value: 2}, {name: &amp;quot;three&amp;quot;, value: 3}], &amp;quot;Export&amp;quot;), type: &amp;quot;base64&amp;quot; }, { name: &amp;quot;test.txt&amp;quot;, content: &amp;quot;test&amp;quot; }, { name: &amp;quot;test2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1070</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1070"/>
		<updated>2025-10-04T10:04:06Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Creates a ZIP file and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: array of objects with properties filename (use forward slash for foldernames), type (empty, base64, file or location) and content (empty (= folder), base64 (= use type base64), filename(= use type file), url (= use type location), string (for text file, leave type empty) or bytearray (for binary file, leave type empty))&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileAdvanced({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1069</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1069"/>
		<updated>2025-10-04T09:59:37Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Creates a ZIP file and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFileInBase64({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1068</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1068"/>
		<updated>2025-10-04T09:59:05Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Creates a ZIP file and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filepath (use forward slash for foldernames) as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1067</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1067"/>
		<updated>2025-10-04T09:58:33Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert URL to PDF and return as base64 (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Creates a ZIP file and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: object with filename as key and the value can be string (text file content), or a byte array (binary file content)&lt;br /&gt;
#optional parameter 2: object with possible properties: Level (level of compression; 0-9, 9 being the highest level of compression), Password&lt;br /&gt;
 CommonInterface.createZipFile({ &amp;quot;test/test.pdf&amp;quot;: CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;), &amp;quot;test.txt&amp;quot;: &amp;quot;test&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the ZIP file&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1066</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1066"/>
		<updated>2025-10-04T09:52:06Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert URL to PDF and return as base64 (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1065</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1065"/>
		<updated>2025-10-04T09:51:52Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert URL to PDF and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1064</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1064"/>
		<updated>2025-10-04T09:51:30Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert HTML to PDF and return as base64 (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.urlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
	<entry>
		<id>https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1063</id>
		<title>JavaScript</title>
		<link rel="alternate" type="text/html" href="https://wiki.smt-x.com/index.php?title=JavaScript&amp;diff=1063"/>
		<updated>2025-10-04T09:50:27Z</updated>

		<summary type="html">&lt;p&gt;Smtxwiki: /* Convert HTML to PDF and return as byte[] (since 7.25.10) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Since version 7.20.10 SSP supports javascript steps in the workflow. Below is a summary of all SSP specific functions, available to be used within the step:&lt;br /&gt;
&lt;br /&gt;
== CommonInterface ==&lt;br /&gt;
The CommonInterface package supports a number of basic java functions that can be used in all javascript functions within SSP.&lt;br /&gt;
&lt;br /&gt;
=== Common Functions ===&lt;br /&gt;
==== logToConsole (7.23.01) ====&lt;br /&gt;
logs entry to the JavaScript console&lt;br /&gt;
#First parameter is the message or object to be added&lt;br /&gt;
 CommonInterface.logToConsole(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
The logged information can be found on this url: https://yourserver/Common/Admin/JavaScriptConsole.aspx&lt;br /&gt;
&lt;br /&gt;
==== logDebug ====&lt;br /&gt;
logs entry as &#039;debug&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object (since 7.22.10) to be added to the common log&lt;br /&gt;
 CommonInterface.logDebug(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logInfo (7.22.10) ====&lt;br /&gt;
logs entry as &#039;info&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logInfo(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logWarning (7.22.10) ====&lt;br /&gt;
logs entry as &#039;warning&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logWarning(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logError (7.22.10) ====&lt;br /&gt;
logs entry as &#039;error&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logError(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== logFatal (7.22.10) ====&lt;br /&gt;
logs entry as &#039;fatal&#039; into the physical logfile of the Common application&lt;br /&gt;
#First parameter is the message or object to be added to the common log&lt;br /&gt;
 CommonInterface.logFatal(&#039;message&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the hash of a string ====&lt;br /&gt;
first parameter is the type of hash, can be: sha1, sha1_base64, sha256, sha256_base64, sha512 or sha512_base64&lt;br /&gt;
#second parameter is the string to be hashed&lt;br /&gt;
 CommonInterface.getHash(&#039;sha512&#039;, &#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF&lt;br /&gt;
 &lt;br /&gt;
==== encrypts string ====&lt;br /&gt;
#first parameter is the string to be encrypted&lt;br /&gt;
#second parameter is the password (if empty (empty string) the default one is used)&lt;br /&gt;
 CommonInterface.encrypt(&#039;test&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&lt;br /&gt;
&lt;br /&gt;
==== decrypts string ====&lt;br /&gt;
#first parameter is the password (if empty the default one is used)&lt;br /&gt;
 CommonInterface.decrypt(&#039;oOe3y182qDKOGzmFpfTiLzNpML+fyvwhfjA9HqF9OwYqcM/PZovosALARZzApNnvToKpBV1dsWnaDP7+iTBo/ic33ZwcxuNRlbGHiKDwdEY=&#039;, &#039;mypassword&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
 &lt;br /&gt;
==== generate a new guid ====&lt;br /&gt;
 CommonInterface.newGuid();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a new guid (eg 9ec5d882-dcb7-408b-9638-c4f05045f18c)&lt;br /&gt;
&lt;br /&gt;
==== sleep ====&lt;br /&gt;
#first parameter is the amount of time (in milliseconds) the thread needs to be suspended&lt;br /&gt;
 CommonInterface.sleep(1000);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== toDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the local time zone&lt;br /&gt;
&lt;br /&gt;
==== toUtcDate (7.22.02) ====&lt;br /&gt;
#first parameter is date in string in the format yyyyMMdd or yyyyMMddHHmmss or yyyyMMddHHmm (7.24.10) - input is sanitize, these characters will be removed: &amp;quot;-&amp;quot;, &amp;quot;/&amp;quot;, &amp;quot;T&amp;quot;, &amp;quot;:&amp;quot;, &amp;quot; &amp;quot; and &amp;quot;.0000000&amp;quot; (7.25.02)&lt;br /&gt;
 CommonInterface.toUtcDate(&amp;quot;20220101&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: a date object in the UTC time zone&lt;br /&gt;
&lt;br /&gt;
==== dateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the local time zone (warning, dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.dateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20211231&lt;br /&gt;
&lt;br /&gt;
 CommonInterface.dateToString(CommonInterface.toDate(&amp;quot;20220101&amp;quot;), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== dateToUtcDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object&lt;br /&gt;
 CommonInterface.dateToUtcDate(CommonInterface.toDate(&amp;quot;20220101&amp;quot;));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== utcDateToDate (7.23.04) ====&lt;br /&gt;
#first parameter is date object in UTC&lt;br /&gt;
 CommonInterface.dateToUtcDate(new Date(2022, 0, 1));&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== utcDateToString (7.22.02) ====&lt;br /&gt;
#first parameter is date object in the UTC time zone (dates created in Javascript are always UTC)&lt;br /&gt;
#second parameter is the format you want the date to be in&lt;br /&gt;
#optional third parameter is the culture (eg nl) since 7.24.10&lt;br /&gt;
 CommonInterface.utcDateToString(new Date(2022, 0, 1), &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in string in the format specified -&amp;gt; 20220101&lt;br /&gt;
&lt;br /&gt;
==== stringToDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object&lt;br /&gt;
&lt;br /&gt;
==== stringToUtcDate (7.22.06) ====&lt;br /&gt;
#first parameter is the input string which represents the date&lt;br /&gt;
#second parameter is the format the input is in&lt;br /&gt;
 CommonInterface.stringToUtcDate(&amp;quot;20211231&amp;quot;, &amp;quot;yyyyMMdd&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date object in UTC&lt;br /&gt;
&lt;br /&gt;
==== dateAdd (7.22.09) ====&lt;br /&gt;
Manipulate a date&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#second parameter: amount&lt;br /&gt;
#third parameter: unit (bh, bd, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, since 7.24.10: bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateAdd(new Date(), -5, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the modified date (eg now minus 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== dateDiff (7.24.10) ====&lt;br /&gt;
Calculate the difference between tow dates&lt;br /&gt;
#first parameter: date1&lt;br /&gt;
#second parameter: date2&lt;br /&gt;
#third parameter: unit (bh, bd, bm, bs, y, year, M, month, d, day, h, hour, m, minute, s, second) bh = business hour, bd = business day, bm = business minute, bs = business second&lt;br /&gt;
 CommonInterface.dateDiff(date1, date2, &amp;quot;h&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the difference (eg 5 hours)&lt;br /&gt;
&lt;br /&gt;
==== getSspEnvironmentName (7.22.06) ====&lt;br /&gt;
Gets the SSP environment name as configured in the settings&lt;br /&gt;
 CommonInterface.getSspEnvironmentName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the environment name (eg: Production)&lt;br /&gt;
&lt;br /&gt;
==== getLanguages (7.22.06) ====&lt;br /&gt;
Gets all the languages available in the installation&lt;br /&gt;
 CommonInterface.getLanguages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, flagurl, isdefault, and culture in JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsByCategory (7.22.08) ====&lt;br /&gt;
Gets all the translations by categoryname&lt;br /&gt;
#first parameter: category&lt;br /&gt;
#optional second parameter languageid (default is current language id)&lt;br /&gt;
 CommonInterface.getTranslationsByCategory(&amp;quot;CustomUI&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with name of the translation as propertyname and the translation as value JSON&lt;br /&gt;
&lt;br /&gt;
==== getTranslationsLastReloadTicks (7.22.08) ====&lt;br /&gt;
Gets the date in ticks of the last reload time (use for client side caching of the translations)&lt;br /&gt;
 CommonInterface.getTranslationsLastReloadTicks();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the date in ticks&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageCulture (7.23.08) ====&lt;br /&gt;
Gets the culture of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageCulture();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the culture&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageName (7.23.08) ====&lt;br /&gt;
Gets the name of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the name&lt;br /&gt;
&lt;br /&gt;
==== getDefaultLanguageId (7.23.08) ====&lt;br /&gt;
Gets the id of the default language&lt;br /&gt;
 CommonInterface.getDefaultLanguageId();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesById (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than the id specified&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesById(0);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getNewEventEntriesByDate (7.22.08) ====&lt;br /&gt;
Gets all the new event entries greater than or equal to the date specified&lt;br /&gt;
#first parameter: date&lt;br /&gt;
#optional second parameter: typename&lt;br /&gt;
 CommonInterface.getNewEventEntriesByDate(&amp;quot;2022-08-01T14:00:00&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, dateadded, typename and payload JSON&lt;br /&gt;
&lt;br /&gt;
==== getCompanyName (7.24.02) ====&lt;br /&gt;
Returns the name of the company as specified in the license key&lt;br /&gt;
 CommonInterface.getCompanyName();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the company name&lt;br /&gt;
&lt;br /&gt;
==== getClientVersion (7.25.01) ====&lt;br /&gt;
Returns the client version of the SSP installation&lt;br /&gt;
 CommonInterface.getClientVersion();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the client version&lt;br /&gt;
&lt;br /&gt;
==== getTextPageDetail (7.24.07) ====&lt;br /&gt;
Gets a text page by name&lt;br /&gt;
#first parameter: name&lt;br /&gt;
 CommonInterface.getTextPageDetail(&#039;Help&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name, title, content and documents (=array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
=== Conversion ===&lt;br /&gt;
==== Convert text to byte[] (since 7.25.04) ====&lt;br /&gt;
Converts a string into a byte array&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBytes(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [116,101,115,116]&lt;br /&gt;
&lt;br /&gt;
==== Get the number of bytes for a text (since 7.25.04)  ====&lt;br /&gt;
Get the number of bytes for a text&lt;br /&gt;
#First parameter is the text&lt;br /&gt;
 CommonInterface.getByteCount(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 4&lt;br /&gt;
&lt;br /&gt;
==== Convert text to base64 ====&lt;br /&gt;
Converts a string into a base64 encoded string&lt;br /&gt;
#First parameter is the string to be converted&lt;br /&gt;
 CommonInterface.convertToBase64(&#039;test&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert byte[] to base64 (since 7.25.04) ====&lt;br /&gt;
#first parameter is the byte[]&lt;br /&gt;
 CommonInterface.convertBytesToBase64([116,101,115,116]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdA==&lt;br /&gt;
&lt;br /&gt;
==== Convert base64 to string ====&lt;br /&gt;
Converts a string that is base64 encoded into a readable string&lt;br /&gt;
#first parameter  is the string to be decoded&lt;br /&gt;
 CommonInterface.convertFromBase64(&#039;dGVzdA==&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== json encode (7.21.09) ====&lt;br /&gt;
Encodes to JSON.&lt;br /&gt;
#first parameter is the object to be encoded&lt;br /&gt;
 CommonInterface.jsonEncode({ name: &#039;John&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: {&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
==== json decode (7.21.09) ====&lt;br /&gt;
Converts JSON into object&lt;br /&gt;
#first parameter is the text to be converted&lt;br /&gt;
 CommonInterface.jsonDecode(&#039;{&amp;quot;name&amp;quot;:&amp;quot;John&amp;quot;}&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the object&lt;br /&gt;
 &lt;br /&gt;
==== htmlencode text ====&lt;br /&gt;
Encodes text that contains html code into encoded html so that the html code is displayed in a browser. This function can be used to avoid the execution of input strings.&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
#optional second parameter whether line breaks show be replaces by br tags (defaults to true) (since 7.23.02)&lt;br /&gt;
 CommonInterface.htmlEncode(&#039;&amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== line breaks to br tag (7.23.02) ====&lt;br /&gt;
Replaces the line breaks to br tags.&lt;br /&gt;
#first parameter is the string to be used&lt;br /&gt;
 CommonInterface.lineBreaksToBr(&#039;test1\ntest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&amp;amp;lt;br /&amp;amp;gt;test2&lt;br /&gt;
&lt;br /&gt;
==== htmldecode text ====&lt;br /&gt;
Converts encoded html into default html&lt;br /&gt;
#first parameter is the html string to be converted&lt;br /&gt;
 CommonInterface.htmlDecode(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== urlencode text ====&lt;br /&gt;
Encodes a string into a url encoded string.&lt;br /&gt;
#first parameter is the text to be encoded&lt;br /&gt;
 CommonInterface.urlEncode(&#039;?param1=test1&amp;amp;param2=test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: %3fparam1%3dtest1%26param2%3dtest2&lt;br /&gt;
 &lt;br /&gt;
==== urldecode text ====&lt;br /&gt;
Decodes a url encoded string into a readable format&lt;br /&gt;
#first parameter is the string to be decoded&lt;br /&gt;
 CommonInterface.urlDecode(&#039;%3fparam1%3dtest1%26param2%3dtest2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: ?param1=test1&amp;amp;param2=test2&lt;br /&gt;
 &lt;br /&gt;
==== xmlencode text ====&lt;br /&gt;
Encodes a text string into proper XML characters&lt;br /&gt;
#first parameter is the string to be encoded&lt;br /&gt;
 CommonInterface.xmlEncode(&#039;test1 &amp;amp; test2&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1 &amp;amp;amp; test2&lt;br /&gt;
 &lt;br /&gt;
==== Remove invalid characters ====&lt;br /&gt;
#first parameter is the string that contains non-standard characters&lt;br /&gt;
remove invalid (weird characters, mostly from pasting from other soures) xml characters:&lt;br /&gt;
 CommonInterface.stripNonValidXMLCharacters (&#039;♦≡╬▌test1&#039;};&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test1&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to html ====&lt;br /&gt;
Convert bb-code in html formatted text, to include bb-code formatted text on web pages.&lt;br /&gt;
#first parameter is the bbcode that should be converted into HTML&lt;br /&gt;
#second optional parameter (since 7.24.11): object with possible key: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToHtml(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &amp;lt;strong&amp;gt;test&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Convert bbcode to text ====&lt;br /&gt;
Convert bb-code into standard text by removing all codes&lt;br /&gt;
#first parameter is the bbcode to be converted into text&lt;br /&gt;
#second optional parameter (since 7.23.09): object with possible key: UseTextForLinks (value: true or false), when there&#039;s an url in the bb code, the label is used when UseTextForLinks is true - since 7.24.11: Convert or Skip: array of types to convert or to skip (Bold, Italic, ...)&lt;br /&gt;
 CommonInterface.bbCodeToText(&#039;[b]test[/b]&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Convert html to text (7.23.01) ====&lt;br /&gt;
Convert html into standard text by removing all codes&lt;br /&gt;
#first parameter is the html to be converted into text&lt;br /&gt;
 CommonInterface.convertHtmlToText(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Strip html from text (7.23.01) ====&lt;br /&gt;
Remove html tags using a regular expression&lt;br /&gt;
#first parameter is the html to be used&lt;br /&gt;
 CommonInterface.stripHtml(&#039;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test&lt;br /&gt;
&lt;br /&gt;
==== Replace (7.22.09) ====&lt;br /&gt;
Returns a new string in which all occurrences of a specified string in the current string are replaced with another specified string&lt;br /&gt;
#first parameter: the original string&lt;br /&gt;
#second parameter: the string you wish to replace&lt;br /&gt;
#third parameter: the string you to use as replacement&lt;br /&gt;
 CommonInterface.replace(&#039;test&#039;, &#039;t&#039;, &#039;b&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: besb&lt;br /&gt;
&lt;br /&gt;
==== getValueFromXml (7.23.01) ====&lt;br /&gt;
Get a single value by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValueFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book[1]/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: Harry Potter&lt;br /&gt;
&lt;br /&gt;
==== getValuesFromXml (7.23.01) ====&lt;br /&gt;
Get multiple values by an XPath expression from an XML string&lt;br /&gt;
#first parameter: the XML as a string&lt;br /&gt;
#second parameter: the XPath expression&lt;br /&gt;
 CommonInterface.getValuesFromXml(&#039;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;bookstore&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Harry Potter&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;29.99&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;book&amp;gt;&amp;lt;title lang=&amp;quot;en&amp;quot;&amp;gt;Learning XML&amp;lt;/title&amp;gt;&amp;lt;price&amp;gt;39.95&amp;lt;/price&amp;gt;&amp;lt;/book&amp;gt;&amp;lt;/bookstore&amp;gt;&#039;, &#039;/bookstore/book/title/text()&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: [&amp;quot;Harry Potter&amp;quot;,&amp;quot;Learning XML&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== File System ===&lt;br /&gt;
==== Get the URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https://demo.smt-x.com&#039;&lt;br /&gt;
&lt;br /&gt;
==== Get the local URL to SSP (7.23.01) ====&lt;br /&gt;
Get the pubic URL to ssp&lt;br /&gt;
 CommonInterface.getSspLocalUrl();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: &#039;https//localhost&#039;&lt;br /&gt;
&lt;br /&gt;
==== Check if the input is a valid path (url or local path) ====&lt;br /&gt;
Checks if the provided path is valid. Returns 1 or 0&lt;br /&gt;
 CommonInterface.isValidPath(&#039;D:\\test.txt&#039;);&lt;br /&gt;
 CommonInterface.isValidPath(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
&lt;br /&gt;
==== Check if the url starts with the url (public or local) to ssp ====&lt;br /&gt;
 CommonInterface.isSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: boolean&lt;br /&gt;
 &lt;br /&gt;
==== Local path of url ====&lt;br /&gt;
returns local path to the file for a provided url (only in case the URL point to an ssp file)&lt;br /&gt;
 CommonInterface.getLocalPathForSspFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\test.txt&lt;br /&gt;
&lt;br /&gt;
==== Get the local root folder of the web application (7.24.12) ====&lt;br /&gt;
returns the local root folder of the web application&lt;br /&gt;
 CommonInterface.getLocalPathToWebRoot();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: C:\Websites\dev.ssp7.company.com\Sql.Dev.Ssp7\&lt;br /&gt;
&lt;br /&gt;
==== Get the filename of the url / local path ====&lt;br /&gt;
retrieves the file name that is part of a url&lt;br /&gt;
 CommonInterface.getFileName(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test.txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file extension of the url / local path ====&lt;br /&gt;
Retrieves the extension of the file provided as argument&lt;br /&gt;
 CommonInterface.getFileExtension(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: .txt&lt;br /&gt;
 &lt;br /&gt;
==== Get the file content of the url / local path ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents&lt;br /&gt;
 CommonInterface.getFileContent(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content of the url / local path with encoding specified (since 7.21.11) ====&lt;br /&gt;
Downloads the file provided as argument and returns the file contents using the encoding specified. See this list for possible encodings: https://docs.microsoft.com/nl-nl/windows/win32/intl/code-page-identifiers&lt;br /&gt;
 CommonInterface.getFileContentWithEncoding(&#039;D:\\test.txt&#039;, &#039;windows-1250&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: test content&lt;br /&gt;
&lt;br /&gt;
==== Get the file content in base 64 of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileContentInBase64(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: dGVzdCBjb250ZW50&lt;br /&gt;
&lt;br /&gt;
==== Get the file content as byte array of the url / local path (since 7.23.04) ====&lt;br /&gt;
 CommonInterface.getFileContentInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the array of bytes&lt;br /&gt;
&lt;br /&gt;
==== Get the file size in bytes of the url / local path ====&lt;br /&gt;
 CommonInterface.getFileSizeInBytes(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 12&lt;br /&gt;
&lt;br /&gt;
==== Get mime type or content type for file (since 7.25.04) ====&lt;br /&gt;
 CommonInterface.getMimeTypeForFile(&#039;http://dev.ssp7.company.com/test.txt&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: text/plain&lt;br /&gt;
&lt;br /&gt;
==== Format file size in readable format (with B, KB, MB, GB or TB) ====&lt;br /&gt;
Converts the provided number of bytes into a readable file size&lt;br /&gt;
 CommonInterface.formatFileSizeInBytes(5242880);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 5 MB&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file (since 7.21.11) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
#parameter 3: the physical location of the Excel file, including filename and .xlsx extension&lt;br /&gt;
 CommonInterface.saveToExcel([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;, &amp;quot;C:\\Temp\\Example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing when success, otherwise the error message&lt;br /&gt;
&lt;br /&gt;
==== Save an object / array of objects to an Excel file and return as base64 (since 7.24.03) ====&lt;br /&gt;
#parameter 1: the object / array of objects you want to save&lt;br /&gt;
#parameter 2: name of the sheet in Excel&lt;br /&gt;
 CommonInterface.generateExcelInBase64([{&amp;quot;name&amp;quot;: &amp;quot;first value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;first summary&amp;quot;},{&amp;quot;name&amp;quot;: &amp;quot;second value&amp;quot;, &amp;quot;summary&amp;quot;: &amp;quot;second summary&amp;quot;}], &amp;quot;Sheet1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the Excel file in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel in base64 to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file in base64&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelInBase64ToJson(&amp;quot;excelinbase64&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel as byte array to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the Excel file as a byte array&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelAsByteArrayToJson([0,1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert Excel to JSON array (since 7.25.02) ====&lt;br /&gt;
#parameter 1: the location to the Excel file&lt;br /&gt;
#optional parameter 2: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 CommonInterface.excelFileToJson(&amp;quot;C:\\temp\\example.xlsx&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert URL to PDF and return as byte[] (since 7.25.10) ====&lt;br /&gt;
#parameter 1: URL to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdf(&amp;quot;https://example.com/test.html&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the byte array representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Convert HTML to PDF and return as base64 (since 7.25.10) ====&lt;br /&gt;
#parameter 1: HTML to convert&lt;br /&gt;
#optional parameter 2: object with possible properties: BaseUrl, Margin, TopMargin, RightMargin, BottomMargin, LeftMargin, Landscape, LiveUrlsEnabled, PageWidth, PageHeight&lt;br /&gt;
 CommonInterface.htmlToPdfInBase64(&amp;quot;&amp;amp;lt;strong&amp;amp;gt;test&amp;amp;lt;/strong&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the base64 representation of the PDF&lt;br /&gt;
&lt;br /&gt;
==== Get allowed upload extensions (since 7.24.10) ====&lt;br /&gt;
Get the list of allowed file extensions to upload&lt;br /&gt;
 CommonInterface.getAllowedUploadFileExtensions();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array with the extensions&lt;br /&gt;
&lt;br /&gt;
==== Execute an application (since 7.22.09) ====&lt;br /&gt;
#parameter 1: the path of the application to execute&lt;br /&gt;
#optional parameter 2: the parameters to pass to the application&lt;br /&gt;
 CommonInterface.executeApplication(&amp;quot;cmd.exe&amp;quot;, &amp;quot;/c \&amp;quot;dir /B C:\\Temp\&amp;quot;&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: as JSON encoded string of an object with properties output, error and exitcode&lt;br /&gt;
&lt;br /&gt;
==== Save text as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents of the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.saveTextAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save base64 as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the base64 contents of the file&lt;br /&gt;
 CommonInterface.saveBase64AsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;dGVzdA==&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Save byte array as file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the byte array&lt;br /&gt;
 CommonInterface.saveBytesAsFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, [104,105]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Appends a string to a file (since 7.25.09) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#parameter 2: the contents to append to the file&lt;br /&gt;
#optional parameter 3: the encoding to use&lt;br /&gt;
 CommonInterface.appendTextToFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;to append&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Copy a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to save to&lt;br /&gt;
#optional parameter 3: whether to overwrite the file if it exists&lt;br /&gt;
 CommonInterface.copyFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Move a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the source file&lt;br /&gt;
#parameter 2: the path (local or UNC, folder and file name) to move to&lt;br /&gt;
 CommonInterface.moveFile(&amp;quot;C:\\temp\\test.txt&amp;quot;, &amp;quot;C:\\temp\\test2.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a file (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.deleteFile(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a file exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.fileExists(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get file info (since 7.25.07) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the file&lt;br /&gt;
 CommonInterface.getFileInfo(&amp;quot;C:\\temp\\test.txt&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON with properties directory, extension, name, exists, isreadonly, size, creationdate, lastaccessdate, lastwritedate&lt;br /&gt;
&lt;br /&gt;
==== Create a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the folder&lt;br /&gt;
 CommonInterface.createDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Delete a directory (since 7.24.11) ====&lt;br /&gt;
#parameter 1: the path (local or UNC) to the directory&lt;br /&gt;
#optional parameter 2: whether to delete recursive or not (WARNING: deletes folder and all contents when true) - defaults to false&lt;br /&gt;
 CommonInterface.deleteDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if a directory exists (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.directoryExists(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Get the files in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getFilesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of file names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub directories in a directory (since 7.23.04) ====&lt;br /&gt;
#parameter 1: the path (local or UNC, folder and file name) to the folder&lt;br /&gt;
 CommonInterface.getDirectoriesInDirectory(&amp;quot;C:\\temp&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of sub directory names (including the folder name)&lt;br /&gt;
&lt;br /&gt;
=== Calling Web Services ===&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters ====&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter (7.23.01): object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
changes since 7.22.10: in case the web service is not found, an error is thrown instead of returning an empty string&lt;br /&gt;
 CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of single value: the single value (string)&lt;br /&gt;
 &#039;&#039;returns&#039;&#039; in case of the webservice having a return type of datatable or valuelist: the object encoded as a JSON string. If you want to consume it as an object in your javascript, you must use &lt;br /&gt;
 JSON.parse(), eg in one line: JSON.parse(CommonInterface.callWebservice(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; }));&lt;br /&gt;
&lt;br /&gt;
==== Get or send data to or from a webservice defined under adapters wrapped in result object (7.23.01) ====&lt;br /&gt;
Returns the result wrapped in an object with properties result, fromcache, success, doretry, doretrynow, message, exception, data and currentretrycount&lt;br /&gt;
#first parameter: name of webservice&lt;br /&gt;
#second parameter: object with key / value that is used as input fields)&lt;br /&gt;
#optional third parameter: object with key / value that is used as context (possible fields: name, processinstanceid, supportsretry, maxretrycount, currentretrycount, nocache, payload, istest)&lt;br /&gt;
 CommonInterface.callWebserviceWrapped(&#039;Name of webservice&#039;, { &#039;field1&#039;: &#039;value1&#039;, &#039;field2&#039;: &#039;value2&#039; });&lt;br /&gt;
&lt;br /&gt;
==== Schedule an SSP task to run on the next SSP Scheduler run  (7.23.07) ====&lt;br /&gt;
#first parameter: name of task&lt;br /&gt;
 CommonInterface.scheduleTaskToRunOnNextSchedulerRun(&#039;Import Persons&#039;);&lt;br /&gt;
&lt;br /&gt;
=== Datastore parameters ===&lt;br /&gt;
&lt;br /&gt;
==== check if user has access to datastore parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.loggedInPersonCanManageParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; boolean TRUE or FALSE if the currently logged in person has access to the parameter name provided&lt;br /&gt;
&lt;br /&gt;
==== reload a datastore parameter from the source (since 7.23.07) ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.reloadParameter(&#039;My external parameter&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; nothing&lt;br /&gt;
&lt;br /&gt;
==== get all entries of a parameter ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns:&#039;&#039; all the entries (array) with all the fields (properties) as JSON encoded string. If you want to consume it, use JSON.parse, eg: JSON.parse(CommonInterface.getAllParameterEntries(&#039;Address Book&#039;));&lt;br /&gt;
 &lt;br /&gt;
==== get all entries of a parameter sorted on a field ====&lt;br /&gt;
#First parameter: name of the parameter&lt;br /&gt;
#second parameter: field to sort on&lt;br /&gt;
 CommonInterface.getAllParameterEntriesAndSort(&#039;Address Book&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as above but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the count of all entries of a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
 CommonInterface.getAllParameterEntryCount(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: 9&lt;br /&gt;
 &lt;br /&gt;
==== Get specific value of a field for a specific entry ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: key field&lt;br /&gt;
#third parameter: key value&lt;br /&gt;
#fourth parameter: fields to return, joined by double pipes&lt;br /&gt;
 CommonInterface.getParameterEntryValue(&#039;Address Book&#039;, &#039;Email&#039;, &#039;john@company.com&#039;, &#039;Name||Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values if the requested fields for the first entry found, joined by double pipe, eg: john Doe||Maastricht&lt;br /&gt;
 &lt;br /&gt;
==== Get all values of a field in a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: field name&lt;br /&gt;
 CommonInterface.getParameterEntryValues(&#039;Address Book&#039;, &#039;Email&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: JSON encoded string of all the values (sorted), again to consume use JSON.parse, result: [&amp;quot;dasy@company.com&amp;quot;,&amp;quot;donald@company.com&amp;quot;,&amp;quot;john@company.com&amp;quot;,&amp;quot;example@gmail.com&amp;quot;]&lt;br /&gt;
 &lt;br /&gt;
==== Get parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntries(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entries and sort ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
#third parameter: name of the field to sort on&lt;br /&gt;
 CommonInterface.getParameterEntriesAndSort(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; }, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the filter&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, { Email: &#039;john@smt-x.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the first entry where the filter is valid for&lt;br /&gt;
&lt;br /&gt;
==== Get parameter entry by id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
 CommonInterface.getParameterEntry(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: returns the entry for the id&lt;br /&gt;
&lt;br /&gt;
==== Advanced search on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntries(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: see CommonInterface.getAllParameterEntries&lt;br /&gt;
&lt;br /&gt;
 for all filter operators see [[datastore filter operators|here]]&lt;br /&gt;
&lt;br /&gt;
==== Advanced search and sort on parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
#third parameter: field to sort on&lt;br /&gt;
 CommonInterface.searchParameterEntriesAndSort(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}], &#039;Location&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: same as CommonInterface.searchParameterEntries but sorted via the query&lt;br /&gt;
 &lt;br /&gt;
==== Get the result count of an advanced search ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value containing the predicates&lt;br /&gt;
 CommonInterface.searchParameterEntryCount(&#039;Address Book&#039;, [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;gmail.com&#039; },{ connector: &#039;or&#039;, subfilter: [{ fieldname: &#039;Email&#039;, filteroperator: &#039;contains&#039;, filtervalue: &#039;company&#039; }, { fieldname: &#039;Email&#039;, filteroperator: &#039;notcontains&#039;, filtervalue: &#039;john&#039; } ]}]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of records found&lt;br /&gt;
 &lt;br /&gt;
==== Add an entry to a parameter ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
 Example: &lt;br /&gt;
 var field1 = #REPLACE-FORMFIELD-ABC#;&lt;br /&gt;
 var field2 = #REPLACE-FORMFIELD-DEF#;&lt;br /&gt;
 CommonInterface.addParameterEntry(&#039;Address Book&#039;, { &lt;br /&gt;
    columnname1 : field1, &lt;br /&gt;
    columnname2 : field2 &lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
==== Add an entry to a parameter SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntrySecure(&#039;Address Book&#039;, { &#039;Name&#039;: &#039;Test&#039;, &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the new internal id of the entry&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.addParameterEntries(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
&lt;br /&gt;
==== Add multiple entries to a parameter SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: array of objects with key / value that contains the fields (keys) with the values (values)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.addParameterEntriesSecure(&#039;Address Book&#039;, [{ &#039;Name&#039;: &#039;Test1&#039;, &#039;Email&#039;: &#039;test1@company.com&#039; }, { &#039;Name&#039;: &#039;Test2&#039;, &#039;Email&#039;: &#039;test2@company.com&#039; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  array of the new internal ids for the entries&lt;br /&gt;
 &lt;br /&gt;
==== updates zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
 CommonInterface.updateParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
&lt;br /&gt;
==== updates zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#third parameter: object with key / value that contains the new values (not all values are required)&lt;br /&gt;
#optional forth parameter (7.25.09): object with possible properties: personid, resetcache, ishidden&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.updateParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; }, { &#039;Name&#039;: &#039;Test updated&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries updated (make sure you use the correct filter, you could potentially update all the entries)&lt;br /&gt;
 &lt;br /&gt;
==== Delete zero or more parameter entries ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntries(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete zero or more parameter entries SECURE ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: object with key / value that represents the predicate (filter)&lt;br /&gt;
#optional third parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntriesSecure(&#039;Address Book&#039;, { &#039;Email&#039;: &#039;test@company.com&#039; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted (make sure you use the correct filter, you could potentially delete all the entries)&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataId(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete a parameter entry based on the id SECURE (7.25.09) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#second parameter: the id&lt;br /&gt;
#optional third parameter: object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteParameterEntryByDataIdSecure(&#039;Address Book&#039;, &#039;abcdefgh&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
 CommonInterface.deleteAllParameterEntries(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
==== Delete all parameter entries SECURE (since 7.23.07) ====&lt;br /&gt;
#first parameter: name of the parameter&lt;br /&gt;
#optional second parameter (7.25.09): object with possible properties: personid, resetcache&lt;br /&gt;
#Security: This function checks if the currently logged in person is authorized to edit the parameter&lt;br /&gt;
 CommonInterface.deleteAllParameterEntriesSecure(&#039;Address Book&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;:  the number of entries deleted&lt;br /&gt;
&lt;br /&gt;
=== Person and person group (7.21.07) ===&lt;br /&gt;
==== getPerson ====&lt;br /&gt;
Get person with internal id&lt;br /&gt;
#First parameter is internal id of the person&lt;br /&gt;
 CommonInterface.getPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersons (7.23.08) ====&lt;br /&gt;
Get persons with internal id&lt;br /&gt;
#First parameter is an array with internal id of the persons&lt;br /&gt;
 CommonInterface.getPersons([1,2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByEmail (acted as searchPersonsByEmail before 7.22.02) ====&lt;br /&gt;
Get list of people via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getPersonsByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByEmail (7.22.02) ====&lt;br /&gt;
Get active peron via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.getActivePersonByEmail(&amp;quot;john@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByEmail (7.22.02) ====&lt;br /&gt;
Get list of people by searching via email&lt;br /&gt;
#First parameter is the email address&lt;br /&gt;
 CommonInterface.searchPersonsByEmail(&amp;quot;@doe.com&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByUniqueId (acted as searchPersonsByUniqueId before 7.22.02)  ====&lt;br /&gt;
Get list of people via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getPersonsByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== getActivePersonByUniqueId (7.22.02) ====&lt;br /&gt;
Get person via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.getActivePersonByUniqueId(&amp;quot;john.doe&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchPersonsByUniqueId (7.22.02) ====&lt;br /&gt;
Get list of people by searching via uniqueid&lt;br /&gt;
#First parameter is the uniqueid&lt;br /&gt;
 CommonInterface.searchPersonsByUniqueId(&amp;quot;jo&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonsByFilter (7.24.11) ====&lt;br /&gt;
Search for persons using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Email&amp;quot;, FilterValue: &amp;quot;smt-x.com&amp;quot;, Operator: &amp;quot;EndsWith&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== reloadPersonData (7.23.07) ====&lt;br /&gt;
Reloads the persons data&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
 CommonInterface.reloadPersonData(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== getPersonDetail (7.23.07) ====&lt;br /&gt;
Gets the detail of a person, including the person extra fields&lt;br /&gt;
#First parameter is the id of the person&lt;br /&gt;
#Optional second parameter is a boolean whether to reload the persons data first&lt;br /&gt;
 CommonInterface.getPersonDetail(1, true);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description, inactive, fields (array of objects with properties name and value) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonField ====&lt;br /&gt;
Get the value of a person field for a specific person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
#Second parameter is the name of the field (can be UniqueId, FirstName, LastName, Email or any other custom defined person field)&lt;br /&gt;
 CommonInterface.getPersonField(1, &amp;quot;Country&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value of the field&lt;br /&gt;
&lt;br /&gt;
==== getPersonFirstAndLastName ====&lt;br /&gt;
Get the first and last name of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonFirstAndLastName(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the first and last name&lt;br /&gt;
&lt;br /&gt;
==== getPersonDescription ====&lt;br /&gt;
Get the description of a person&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonDescription(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the description in the format as defined in the settings&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsForPerson ====&lt;br /&gt;
Get the person groups where the person is member of (before 7.24.05: only active ones + where person is member or manager)&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsAsManagerOrMemberForPerson (7.24.05) ====&lt;br /&gt;
Get the person groups where the person is manager or member of&lt;br /&gt;
#First parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.getPersonGroupsAsManagerOrMemberForPerson(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description, inactive (7.24.05) in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroup ====&lt;br /&gt;
Get the person group with internal id&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByName ====&lt;br /&gt;
Get a list of person groups via name&lt;br /&gt;
#First parameter is the name&lt;br /&gt;
 CommonInterface.getPersonGroupsByName(&amp;quot;Groupname&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name and description in JSON&lt;br /&gt;
&lt;br /&gt;
==== getPersonGroupsByFilter (7.24.11) ====&lt;br /&gt;
Search for person groups using a filter&lt;br /&gt;
#first parameter: a filter object or an array of filter objects&lt;br /&gt;
#optional second parameter: an object with paging information&lt;br /&gt;
 CommonInterface.getPersonGroupsByFilter([{IsActive: true}, { Connector: &amp;quot;OR&amp;quot;, FieldName: &amp;quot;Name&amp;quot;, FilterValue: &amp;quot;test&amp;quot;, Operator: &amp;quot;Contains&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, name, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== addPersonToPersonGroup (7.23.03) ====&lt;br /&gt;
Adds a person to a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
#optional third parameter is whether the person wants to receive the mails via the group&lt;br /&gt;
 CommonInterface.addPersonToPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== setPersonsInPersonGroup (7.23.03) ====&lt;br /&gt;
Sets the list of persons in a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is an array with internal ids of the persons&lt;br /&gt;
#optional third parameter is whether the persons want to receive the mails via the group&lt;br /&gt;
 CommonInterface.setPersonsInPersonGroup(1, [1, 2, 3], false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== removePersonFromPersonGroup (7.23.03) ====&lt;br /&gt;
Removes a person from a person group&lt;br /&gt;
#first parameter is the internal id of the person group&lt;br /&gt;
#second parameter is the internal id of the person&lt;br /&gt;
 CommonInterface.removePersonFromPersonGroup(1, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if there were changes, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== getPersonsForPersonGroup ====&lt;br /&gt;
Get the members of the person group&lt;br /&gt;
#First parameter is the internal id of the person group&lt;br /&gt;
 CommonInterface.getPersonsForPersonGroup(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== searchPersons (7.22.06) ====&lt;br /&gt;
Search for people&lt;br /&gt;
#first parameter is text you wish to search for&lt;br /&gt;
#optional second parameter is the number of records you&#039;d like to receive (default is 50)&lt;br /&gt;
 CommonInterface.searchPersons(&amp;quot;john&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
==== getAllPersons (7.25.10) ====&lt;br /&gt;
Get all persons (per 1.000 records, pass the last id to fetch the next page)&lt;br /&gt;
#optional first parameter: last id of the previous fetch&lt;br /&gt;
 CommonInterface.getAllPersons();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Global messages (7.22.06) ===&lt;br /&gt;
==== getGlobalMessages ====&lt;br /&gt;
Get the active global messages&lt;br /&gt;
 CommonInterface.getGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages SECURE (7.22.12) ====&lt;br /&gt;
Get the active global messages for the logged in user&lt;br /&gt;
 CommonInterface.getGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired (7.22.12) ====&lt;br /&gt;
Get the expired global messages&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessages();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== getGlobalMessages expired SECURE (7.22.12) ====&lt;br /&gt;
Get the expired global messages for the logged in user&lt;br /&gt;
 CommonInterface.getExpiredGlobalMessagesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, ontop, unread, fromdateticks, fromdate, subject, shortdescription and body + since 7.22.12: isurgent, todateticks, todate, categories + since 7.25.07: person in JSON&lt;br /&gt;
&lt;br /&gt;
==== markGlobalMessageAsSeen ====&lt;br /&gt;
Marks a global message as seen for the logged in account&lt;br /&gt;
#first parameter is the id of the message&lt;br /&gt;
 CommonInterface.markGlobalMessageAsSeen(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Navigation items (7.22.10) ===&lt;br /&gt;
==== Get navigation items ====&lt;br /&gt;
Get all the navigation items&lt;br /&gt;
 CommonInterface.getNavigationItems();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get navigation items SECURE ====&lt;br /&gt;
Get all the navigation items based on the logged in user&lt;br /&gt;
 CommonInterface.getNavigationItemsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, name, typeid, typename, url, showinbox, showatbottom and boxcssclass in JSON&lt;br /&gt;
&lt;br /&gt;
== WorkflowInterface ==&lt;br /&gt;
The WorkflowInterface contains function that interact with tickets&lt;br /&gt;
&lt;br /&gt;
=== Processes ===&lt;br /&gt;
==== Search count processes (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcesses({ name: &amp;quot;phone&amp;quot;, nameoperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 WorkflowInterface.searchCountProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search processes (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcesses({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search processes SECURE (7.23.08) ====&lt;br /&gt;
Returns the processes that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, text, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 WorkflowInterface.searchProcessesSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, title, description in JSON&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Check if a ticket id exists (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIdExists(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Remove process instance object from thread cache (7.21.07) ====&lt;br /&gt;
For performance reasons, the process instance object will be cached per request, if you edit the object and request data after the action you may need to clear the cache first. Use this only when you are sure you need this.&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.removeProcessInstanceFromThreadCache(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is still submitting (7.22.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsStillSubmitting(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if process instance is closed (7.22.09) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.processInstanceIsClosed(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Evaluate replace placeholders (7.22.07) ====&lt;br /&gt;
Evaluates the replace placeholders in the specified text&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the text containing the replace placeholders&lt;br /&gt;
#optional third parameter: object with optional properties IsInHtml, UseLoggedInAccount, UseCurrentLanguage, LanguageId&lt;br /&gt;
 WorkflowInterface.evaluateReplacePlaceholders(1500, &amp;quot;#REPLACE-STEP-PROCESS-Guid#&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the evaluated value&lt;br /&gt;
&lt;br /&gt;
==== Do check wait steps (7.22.09) ====&lt;br /&gt;
Evaluates the open wait steps in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.doCheckWaitSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread, so it does not wait until the wait step checks are done)&lt;br /&gt;
&lt;br /&gt;
==== Do resume from here (7.23.01) ====&lt;br /&gt;
Restarts a process instance from a certain step&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: processinstancestepid&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
#forth parameter: whether to remove the previous instances&lt;br /&gt;
 WorkflowInterface.doResumeFromProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;, false);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Do retry from here (7.23.01) ====&lt;br /&gt;
Retries a process instance step (in case it can be retried)&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: instance step id&lt;br /&gt;
#third parameter: actor name&lt;br /&gt;
 WorkflowInterface.doRetryProcessInstanceStep(1500, 1800, &amp;quot;SYSTEM&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing (this executes in a separate thread)&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance (7.24.10) ====&lt;br /&gt;
Stops a process instance without checking the rights&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstance(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Stop process instance secure (7.24.10) ====&lt;br /&gt;
Stops a process instance if the logged in person has the rights to do this&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: the actor name&lt;br /&gt;
#optional third parameter: the actor person id&lt;br /&gt;
 WorkflowInterface.stopProcessInstanceSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get workflow information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets count SECURE (7.22.06) ====&lt;br /&gt;
Returns the number of tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
 WorkflowInterface.searchCountWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of tickets&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTickets({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search workflow tickets SECURE (7.22.06) ====&lt;br /&gt;
Returns the tickets based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: object with search criteria (possible properties: LanguageId, CustomKey, Id, Status, Keywords, RequestorId, DateStartedFrom, DateStartedTo, DateEndedFrom, DateEndedTo)&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 WorkflowInterface.searchWorkflowTicketsSecure({&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;});&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), formid, forminstanceid, externalappname, name, processname, formname, isarchived and pool (object with properties id and name) and ticketnr (7.22.06 - contains customkey) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get ticketing information for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTicketInformation(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, guid, processid, datestarted, dateended, workflowissubmitting, requestorperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), requestedforperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), islocked, isrunning, tickettype, tasktype, requestedforteam, pool (object with properties id and name), medium (object with properties code and name), priority (object with properties code and name), status (object with properties code and name), service (object with properties code and name), category (object with properties code and name), classification (object with properties code and name), closurecode (object with properties code and name), description, information, solution, solutionlinkalldocuments, solutiondocumentkeys (array of keys in string), plannedeliverydate, deadlinedate, requestedforalternatename, requestedforalternateemail, requestedforalternatetelephone, assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), customfields (array of objects with properties name, typeid, typename, ishidden, parametername, parametervaluefield, parameterdisplayfield, stringvalue and datetimevalue) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value, internallabel, label and labels (array of objects with properties label and language)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstance(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Start a new process instance with passing thru initial ticketing data (7.21.12) ====&lt;br /&gt;
#first parameter: process (id or name)&lt;br /&gt;
#second parameter: requestor person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#third parameter: requested for person (id or unique id or email) (can be null since 7.24.03)&lt;br /&gt;
#fourth parameter: external app name&lt;br /&gt;
#fifth parameter: array of form field objects, each object can have the properties displayvalue, value (or rawvalue 7.23.07), internallabel (or internalname 7.23.07), label and labels (array of objects with properties label and language), since 7.25.09: fieldid, repeatablesectionfieldid, repeatablesectionindex, visible, searchable, htmlencode, itemorder, selectionparameter, subfielddefinition, fieldtype&lt;br /&gt;
#sixth parameter: object with initial ticketing data, possible properties are assignedtoperson, assignedtopersongroup, category, classification, closurecode, deadlinedate, description, information, initialtasksfield, medium, planneddeliverydate, pool, priority, requestedfor, requestedforalternateemail, requestedforalternatename, requestedforalternatetelephone, requestedforteam, service, solution, status and customfields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
 WorkflowInterface.startProcessInstanceWithTicketData(&amp;quot;My test process&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;John.Doe&amp;quot;, &amp;quot;my test app&amp;quot;, [{ internallabel: &amp;quot;field1&amp;quot;, value: &amp;quot;value 1&amp;quot;, labels: [{ label: &amp;quot;field 1&amp;quot;, language: &amp;quot;English&amp;quot; }, { label: &amp;quot;veld 1&amp;quot;, language: &amp;quot;Nederlands&amp;quot; }] }, { value: &amp;quot;value 2&amp;quot;, displayvalue: &amp;quot;dis val 2&amp;quot;, label: &amp;quot;field 2&amp;quot; }], { status: &amp;quot;New&amp;quot;, assignedtopersongroup: &amp;quot;My first group&amp;quot;, assignedtoperson: &amp;quot;John.Doe&amp;quot;, &amp;quot;Description&amp;quot;: &amp;quot;test&amp;quot;, customfields: [{fieldname: &amp;quot;customfield1&amp;quot;, stringvalue: &amp;quot;custom field value&amp;quot;}] });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id and guid in JSON&lt;br /&gt;
&lt;br /&gt;
=== Rights (7.21.07) ===&lt;br /&gt;
==== Check if the logged in person has workflow admin rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowAdminRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow power user rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowPowerUserRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has workflow write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasWorkflowWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing limited rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketLimitedRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing read rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketReadRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has ticketing write rights on the ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTicketWriteRight(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has write rights on the task (no checks on ticket are done) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.loggedInPersonHasTaskWriteRight(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Variables ===&lt;br /&gt;
==== Get the value of a variable in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
 WorkflowInterface.getVariableValue(1500, &#039;My variable&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== sets the value of a variable in a ticket (if it doesn&#039;t exists, it will be created) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of the variable&lt;br /&gt;
#third parameter: value of the variable&lt;br /&gt;
 WorkflowInterface.setVariableValue(1500, &#039;My variable&#039;, &#039;new value&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Form Values ===&lt;br /&gt;
==== Get all form fields for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllFormFields(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties fieldorder, fieldtypeid, fieldtypename, internalname, label, helptext, subfielddefinition, parametername, value (object depending on the fieldtype), rawvalue, displayvalue, visible, htmlencode, repeatablesectionindex, repeatablesectionfieldid, visibleforui (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get raw value of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string&lt;br /&gt;
 &lt;br /&gt;
==== Get raw displayvalue of a form field in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldDisplayValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the display value as string&lt;br /&gt;
&lt;br /&gt;
==== Get the value definition of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSubFieldDefinition(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the definition (eg: Name||Email)&lt;br /&gt;
&lt;br /&gt;
==== Get the sub value of a form field in a ticket (for selection fields) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValue(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the value as string (eg: Raymond)&lt;br /&gt;
&lt;br /&gt;
==== Get the list of sub value of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
#third parameter: name of the sub field&lt;br /&gt;
 WorkflowInterface.getFormSubFieldValues(1500, &#039;MyFormField&#039;, &#039;Name&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the values as string array in JSON (eg: [&amp;quot;Dominic&amp;quot;, &amp;quot;Raymond&amp;quot;])&lt;br /&gt;
&lt;br /&gt;
==== Get an object (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with single value) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValue(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object in JSON (eg: {&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
==== Get a list of objects (key/value) where key is the sub field name and value the selected values of a form field in a ticket (for selection fields with multiple values) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: internal name of the form field&lt;br /&gt;
 WorkflowInterface.getFormFieldSelectionValues(1500, &#039;MyFormField&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON (eg: [{&amp;quot;Name&amp;quot;: &amp;quot;Raymond&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;},{&amp;quot;Name&amp;quot;: &amp;quot;Dominic&amp;quot;, &amp;quot;Email&amp;quot;: &amp;quot;dominic@smt-x.com&amp;quot;}])&lt;br /&gt;
&lt;br /&gt;
=== Open actions ===&lt;br /&gt;
==== Get the open (step) actions in a ticket ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getOpenActions(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of open actions in JSON (properties: stepname, stepinformation, link, array of actors (person), messagesfunctionid, allowsubmit, typeid, pisiaid, pisianame, submithash, array of fields (properties: id, name, typeid, required, stringvalue, displaystringvalue, datetimevalue, pdbname, pdbvaluefieldname, pdbtextfieldname, pdbhashcheck, rows, regex, helptext), haswriterights (since 7.23.10))&lt;br /&gt;
&lt;br /&gt;
==== Get the amount of open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsCountSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the logged in user&lt;br /&gt;
 &lt;br /&gt;
==== Get the amount of open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmailCount(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the amount of open actions for the email address&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for the logged in user (7.24.07) ====&lt;br /&gt;
 WorkflowInterface.getMyOpenActionsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the open actions for a specific email address (7.24.07) ====&lt;br /&gt;
#first parameter: email&lt;br /&gt;
 WorkflowInterface.getOpenActionsByEmail(email);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an array of objects with properties processinstanceid, processinstanceguid, processinstancestepid, processinstancestepactorid, processinstancestepinstanceactorinstanceid, datestarted, stepname, link, processinstancename, processinstancedatestarted, processinstancerequestorperson, processinstancerequestedforperson in JSON&lt;br /&gt;
&lt;br /&gt;
=== Steps (since 7.24.10) ===&lt;br /&gt;
==== Get all steps as tree in a ticket ====&lt;br /&gt;
Get all steps as tree in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getSteps(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as tree in a ticket secure ====&lt;br /&gt;
Get all steps as tree in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this)&lt;br /&gt;
 WorkflowInterface.getStepsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsList(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all steps as list in a ticket secure (since 7.25.02) ====&lt;br /&gt;
Get all steps as list in a ticket visible for the logged in person&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties: SkipUserHasReadRight (if you already know the user has read rights), IncludeDecisionNoneInstances (include the auto-ended instances), IncludeActorDelegates, IncludeTechnicalActors, IncludeStepInformation (default is true, but if there are a lot of replace variabeles in the information it can take a while to render - set to false if you don&#039;t need this), StepTypes (array of step types to filter on), StepStatuses (array of step statuses to filter on)&lt;br /&gt;
 WorkflowInterface.getStepsAsListSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON&lt;br /&gt;
&lt;br /&gt;
=== Additional information (since 7.24.11) ===&lt;br /&gt;
==== Submit the answer for an additional information request ====&lt;br /&gt;
Submits the answer without checking the logged in user&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswer(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
==== Submit the answer for an additional information request secure ====&lt;br /&gt;
Submits the answer only if the logged in user is allowed to&lt;br /&gt;
#first parameter: id&lt;br /&gt;
#second parameter: answer&lt;br /&gt;
 WorkflowInterface.submitAdditionalInformationAnswerSecure(150, &#039;answer&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: true if succesful, false if it was already answered, null if not found or no rights&lt;br /&gt;
&lt;br /&gt;
=== Logging ===&lt;br /&gt;
==== Get all logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list with all logs, including workflow logs, private notes, public messages and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getAllLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get workflow logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only workflow logs&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getWorkflowLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a log to the process instance (workflow log) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: the log text&lt;br /&gt;
 WorkflowInterface.addWorkflowLog(1500, &#039;My log text&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Overview layouts (7.25.07) ===&lt;br /&gt;
==== Get the default overview layout for a ticket (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#optional second parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getDefaultOverviewLayout(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
==== Get the overview layout for a ticket by name (7.25.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
#second parameter: name of overview layout&lt;br /&gt;
#optional third parameter: object with possible properties IsInHtml (default false), UseLoggedInAccount (default false), UseCurrentLanguage (default false), LanguageId&lt;br /&gt;
 WorkflowInterface.getOverviewLayout(1500, &#039;MyOverviewName&#039;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects in JSON with properties typename, label, value or values (depending on the typename, &amp;quot;Default&amp;quot; has value, &amp;quot;Section&amp;quot; has values which again is an array of objects in JSON of the same type)&lt;br /&gt;
&lt;br /&gt;
=== Attachments ===&lt;br /&gt;
==== Get all documents for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getDocuments(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties type, url, name, isticketdocument, isvisible, id, key and date in JSON&lt;br /&gt;
Use &#039;key&#039; as unique identifier, this key is also used in other objects (eg in solutiondocumentkeys)&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocument(ticketid, &#039;pathtofile&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document to a ticket with a specific name ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Path to the file that should be added&lt;br /&gt;
#third parameter: filename to show in workflow&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentWithFileName(ticketid, &#039;pathtofile&#039;, &#039;filenametoshow&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: since 7.24.11: the document key&lt;br /&gt;
&lt;br /&gt;
==== Add document as base64 to a ticket (7.25.01) ====&lt;br /&gt;
#first parameter: ticketid&lt;br /&gt;
#second parameter: file in base64&lt;br /&gt;
#third parameter: filename&lt;br /&gt;
#fourth parameter: boolean (1 or 0) if file should be visible in workflow&lt;br /&gt;
 WorkflowInterface.addDocumentInBase64(ticketid, &#039;dGVzdA==&#039;, &#039;test.txt&#039;, hideinworkflow);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the document key&lt;br /&gt;
&lt;br /&gt;
==== Delete all currently linked documents from a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.deleteAllDocuments(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Delete a document from a ticket (7.25.03) ====&lt;br /&gt;
#first parameter: the ticketid&lt;br /&gt;
#second parameter: the document key&lt;br /&gt;
 WorkflowInterface.deleteDocument(ticketid, &amp;quot;thekey&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Update Ticketing fields ===&lt;br /&gt;
==== Get action logs for a ticket (7.21.07) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogs(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get action logs secure for a ticket (7.24.10) ====&lt;br /&gt;
Get a list of only action logs, that&#039;s pubic messages, private notes and ticket changes only if the logged in user is allowed to see them&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getActionLogsSecure(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties date, person (object with properties id, firstname, lastname, email, uniqueid, description and inactive), text, typeid, typename, notified (array of names), documentkeys (array of keys in string) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Add a public note within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as public note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPrivateNote(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added note (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a private message within ticketing ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as private note&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addPublicMessage(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
&lt;br /&gt;
==== Add a ticket change entry within ticketing====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: Person unique id or email address&lt;br /&gt;
#third parameter: text to add as ticket change&lt;br /&gt;
#optional fourth parameter: array of objects with properties filename and filecontentinbase64 (7.24.10)&lt;br /&gt;
 WorkflowInterface.addTicketChange(ticketid, personidoremail, logtext);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the added message (since 7.25.04)&lt;br /&gt;
 &#039;&#039;This action will not send an email message&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Update ticket fields ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTicketFields(ticketid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTicketFields(ticketid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;, &amp;quot;Custom&amp;quot;: {&amp;quot;Field01&amp;quot;: &amp;quot;Value01&amp;quot; }});&lt;br /&gt;
 Possible fields: LockTicket, TicketIsRunning, Classification, Status, Description, Information, AssignedToPerson, AssignedToPersonGroup, Category, Medium, Priority, Service, Solution, ClosureCode, Custom, Requestor, RequestedFor, Pool, PlannedDeliveryDate, DeadlineDate, RequestedForAlternateName, RequestedForAlternateEmail, RequestedForAlternateTelephone, SolutionLinkAllDocuments, RequestedForTeam, WorkflowPool, TicketType, TasksType, RemoveOnDate. Since 7.23.05: CustomFields (array of objects with properties fieldname and stringvalue)&lt;br /&gt;
&lt;br /&gt;
==== Lock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.lockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Unlock ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.unlockTicket(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = True ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
 WorkflowInterface.enableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
==== Set ticket to IsRunning = False ====&lt;br /&gt;
 WorkflowInterface.disableTicketIsRunning(ticketid);&lt;br /&gt;
&lt;br /&gt;
====  Create a new, blank Task within a ticket ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: object containing new field values&lt;br /&gt;
#third optional parameter (since 7.23.10): the id of the person used as requestor person&lt;br /&gt;
 WorkflowInterface.addTask(ticketid, fields); &lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the new task id&lt;br /&gt;
&lt;br /&gt;
==== Update fields of a task ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: object containing new field values&lt;br /&gt;
 WorkflowInterface.updateTask(ticketid, taskid, fields);&lt;br /&gt;
 fields: object with a key field to set which field should be updated, together with the new value for example: WorkflowInterface.updateTask(ticketid, taskid, {&amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot;,&amp;quot;Description&amp;quot;:&amp;quot;My descriptionb&amp;quot; });&lt;br /&gt;
 Possible fields: Description, AssignedToPersonGroup, AssignedToPerson, DeliveryDate, Information, Solution, LockedTicket, IsCompleted, ExternalReference, ExternalResolved, LinkAllTicketDocuments, Status, Priority, DeadlineDate, since 7.23.09: Category, ConfigurationItem, since 7.24.12: Subcategory, since 7.25.06: BlockSaveAndComplete, ExternalInApprovalMode&lt;br /&gt;
&lt;br /&gt;
==== Add a message to a task (7.24.10) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: text&lt;br /&gt;
 WorkflowInterface.addTaskMessage(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;text&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system acknowledged a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: externalLinkReference&lt;br /&gt;
#fifth parameter: extraMessage&lt;br /&gt;
 WorkflowInterface.taskAcknowledgementFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;EXT-12345&amp;quot;, &amp;quot;Ticket received&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system adds an update message to a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system marks task as in approval mode (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: message&lt;br /&gt;
 WorkflowInterface.taskInApprovalModeFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Please approve&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== External system reassigns a task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskReassignmentFromExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;The solution&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send update message to an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: updateMessage&lt;br /&gt;
 WorkflowInterface.taskUpdateMessageToExternalSecure(1500, 150, &amp;quot;Update information&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Send approval vote to an external task, only if the logged in user has the rights for this (7.25.06) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: approved (true or false)&lt;br /&gt;
#fifth parameter: motivation&lt;br /&gt;
 WorkflowInterface.taskApprovalVoteToExternalSecure(1500, 150, &amp;quot;john@doe.com&amp;quot;, true, &amp;quot;Go ahead&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: person&lt;br /&gt;
#fourth parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternal(1500, 150, &amp;quot;john@doe.com&amp;quot;, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Reject the solution for an external task, only if the logged in user has the rights for this (7.25.01) ====&lt;br /&gt;
#first parameter: TicketId&lt;br /&gt;
#second parameter: TaskId&lt;br /&gt;
#third parameter: rejectMessage&lt;br /&gt;
 WorkflowInterface.taskRejectSolutionToExternalSecure(1500, 150, &amp;quot;Reject info&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
==== Get information for a task (7.21.07) ====&lt;br /&gt;
#first parameter: task id&lt;br /&gt;
 WorkflowInterface.getTask(100);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all tasks for a ticket (7.21.07) ====&lt;br /&gt;
#first parameter: ticket id&lt;br /&gt;
 WorkflowInterface.getTasks(1500);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, processinstanceid, deliverydate, deadlinedate, dateadded, datecompleted, completed, requestor (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtoperson (object with properties id, firstname, lastname, email, uniqueid, description and inactive), assignedtopersongroup (object with properties id, name and description), description, information, priority (object with properties code and name), status (object with properties code and name), solution, duestatus, linkallticketdocuments, documentkeys (array of keys in string), hasexternallink, externallinkreference, lockedticket, since 7.23.09 category (object with properties code and name), configurationitem (object with properties code and name), since 7.24.10: messages (array of objects with properties date, person, text), since 7.24.12 subcategory (object with properties code and name), since 7.25.01 updatemessageavailable, rejectsolutionavailable, since 7.25.06 approvalvoteavailable, blocksaveandmarkcompleted, externalinapprovalmode in JSON&lt;br /&gt;
&lt;br /&gt;
=== Emails (since 7.21.06) ===&lt;br /&gt;
==== Get an email layout ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
 WorkflowInterface.getEmailLayout(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email layout in a specific language ====&lt;br /&gt;
#first parameter: name of the email layout&lt;br /&gt;
#second parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getEmailLayoutWithLanguageId(name, languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout ====&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayout();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the default language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get the default email layout in a specific language ====&lt;br /&gt;
#first parameter: id of the desired language&lt;br /&gt;
 WorkflowInterface.getDefaultEmailLayoutWithLanguageId(languageid);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the body of the default email layout in the desired language&lt;br /&gt;
 When using a template in JavaScript, please be aware that the string #REPLACE-EmailContent# is replaced within your JavaScript code, before it is executed. If you want to use Layouts in JavaScript, create a specific Layout for that and don&#039;t make use of the placeholder #REPLACE-EmailContent#. Instead use for example JS-REPLACE-EMAILCONTENT.&lt;br /&gt;
&lt;br /&gt;
==== Get an email template (7.22.09) ====&lt;br /&gt;
#first parameter: name of the email template&lt;br /&gt;
#optional second parameter: language id you wish to use&lt;br /&gt;
 WorkflowInterface.getEmailTemplate(name);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: an object with properties subject, body and attachments (array of objects with properties url and name) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Send an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.sendEmail(toName, toEmail, subject, content);&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
&lt;br /&gt;
==== Queue an email ====&lt;br /&gt;
#first parameter: full name of the receiver&lt;br /&gt;
#second parameter: email address of the receiver&lt;br /&gt;
#third parameter: subject of the email&lt;br /&gt;
#fourth parameter: content of the email&lt;br /&gt;
 WorkflowInterface.queueEmail(toName, toEmail, subject, content);&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
&lt;br /&gt;
==== Send an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.sendEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.sendEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 sends the email immediately when &amp;quot;Send immediately&amp;quot; is enabled in the settings, will add the email to the queue otherwise&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
==== Queue an email - advanced ====&lt;br /&gt;
#first parameter: object with properties&lt;br /&gt;
 WorkflowInterface.queueEmailAdvanced(properties);&lt;br /&gt;
 Possible properties: from, fromemail, fromname, to, toemail, toname, cc, ccemail, ccname, bcc, bccemail, bccname, attachments, subject, content, ishtml, disableoverwriteto, processinstanceid&lt;br /&gt;
 &#039;&#039;from&#039;&#039;: can be a string (email address) or an object with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;to, cc and bcc&#039;&#039;: can be a string (email address), an object with the properties &#039;email&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;email&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;attachments&#039;&#039;: can be a string (location of the file), an object with the properties &#039;url&#039; and &#039;name&#039; or an array with strings and or objects with the properties &#039;url&#039; and &#039;name&#039;&lt;br /&gt;
 &#039;&#039;disableoverwriteto&#039;&#039;: boolean to specify whether the &amp;quot;Send all e-mails only to&amp;quot; should be ignored or not&lt;br /&gt;
 &#039;&#039;processinstanceid&#039;&#039;: id of the workflow ticket to link this email to&lt;br /&gt;
 Required properties: subject, content and at least one &#039;to&#039; addressee are required&lt;br /&gt;
 Example: WorkflowInterface.queueEmailAdvanced({&amp;quot;to&amp;quot;: &amp;quot;raymond@smt-x.com&amp;quot;, &amp;quot;cc&amp;quot;: [{email: &amp;quot;dominic@smt-x.com&amp;quot;, name: &amp;quot;Dominic&amp;quot;}], &amp;quot;subject&amp;quot;: &amp;quot;The subject of my email&amp;quot;, &amp;quot;content&amp;quot;: &amp;quot;The &amp;amp;lt;strong&amp;amp;gt;content&amp;amp;lt;/strong&amp;amp;gt; of my email&amp;quot; });&lt;br /&gt;
 adds the email to the queue&lt;br /&gt;
 Since 7.23.05: returns the id of the record&lt;br /&gt;
&lt;br /&gt;
== StudioInterface ==&lt;br /&gt;
&lt;br /&gt;
=== Get the full query string === &lt;br /&gt;
 StudioInterface.getQueryString();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the full query string (without the leading question mark)&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the query string parameter collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllQueryStringKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the query string parameters for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the query string === &lt;br /&gt;
 StudioInterface.getQueryStringValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the query string parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the query string (7.24.03) === &lt;br /&gt;
 StudioInterface.getQueryStringValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the query string parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the header collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllHeaderKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the headers for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the header === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the header parameter for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the header (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getHeaderValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values of the header parameter for the current request in an array&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the server variables collection (7.24.02) === &lt;br /&gt;
 StudioInterface.getAllServerVariableKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the server variables collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the server variables (7.24.02) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValue(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the server variables (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getServerVariableValues(&#039;REMOTE_ADDR&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array of the server variable for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the user host address (since 7.25.05) === &lt;br /&gt;
 StudioInterface.getUserHostAddress();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the IP address of the user&lt;br /&gt;
&lt;br /&gt;
=== Gets all the application session keys (7.25.01) === &lt;br /&gt;
 StudioInterface.getAllAppSessionKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys&lt;br /&gt;
&lt;br /&gt;
=== Gets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getAppSessionValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (object)&lt;br /&gt;
&lt;br /&gt;
=== Sets an application session value (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value&lt;br /&gt;
 StudioInterface.setAppSessionValue(&#039;sessionkeyname&#039;, &#039;sessionkeyvalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Removes an application session object (7.25.01) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.removeAppSession(&#039;sessionkeyname&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the cookie collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllCookieKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the cookies for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the cookie === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a raw value from the cookie (7.24.06) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getCookieValueRaw(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (not url decoded) of the cookie for the current request&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie (7.22.03) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded since 7.24.06)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookie(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw (7.24.06) === &lt;br /&gt;
Adds a cookie, if no expire days is provided, then it&#039;s a session cookie (will be removed when session ends)&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter (optional): expire in nr of days (a negative value will remove the cookie)&lt;br /&gt;
 StudioInterface.setCookieRaw(&#039;cookiename&#039;, &#039;cookievalue&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Set a cookie value raw with options (7.24.10) === &lt;br /&gt;
Adds a cookie using the options provided&lt;br /&gt;
#first parameter: name&lt;br /&gt;
#second parameter: value (will not be url encoded)&lt;br /&gt;
#third parameter: object with supported properties: httponly, path, domain, secure and expires&lt;br /&gt;
 StudioInterface.setCookieRawWithOptions(&#039;cookiename&#039;, &#039;cookievalue&#039;, { &amp;quot;HttpOnly&amp;quot;: false });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get all keys from the posted form collection (7.22.03) === &lt;br /&gt;
 StudioInterface.getAllFormKeys();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array of strings with all the keys of the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get a value from the posted form collection === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValue(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get values in an array from the posted form collection (7.24.03) === &lt;br /&gt;
#first parameter: name&lt;br /&gt;
 StudioInterface.getFormValues(&#039;name&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the values in an array from the posted form collection for the current request&lt;br /&gt;
&lt;br /&gt;
=== Get the http method for the current request === &lt;br /&gt;
 StudioInterface.getHttpMethod();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current http method (GET, POST, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the content type of the current request === &lt;br /&gt;
 StudioInterface.getContentType();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the content type (text/plain, application/json, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the full posted content as string ===&lt;br /&gt;
You can only call this once per request &lt;br /&gt;
 StudioInterface.getPostedContent();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: posted content&lt;br /&gt;
&lt;br /&gt;
=== Check if the HTTP request has a posted file (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.hasPostedFile();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get information about the posted file in the HTTP request (7.23.12) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInfo();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get information about the multiple posted files in the HTTP request (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFileInfos();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of object with properties filename, contenttype and contentlength in JSON&lt;br /&gt;
&lt;br /&gt;
=== Save a posted file (7.23.12) === &lt;br /&gt;
#first parameter: foldername where the file should be stored&lt;br /&gt;
#optional second parameter: filename to use (if empty the original one is used)&lt;br /&gt;
#optional third parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.savePostedFile(&#039;C:\\temp\\&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Get the posted file from the HTTP request in base64 (7.24.09) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false (7.24.10)&lt;br /&gt;
 StudioInterface.getPostedFileInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the posted file in base64&lt;br /&gt;
&lt;br /&gt;
=== Get the multiple posted files from the HTTP request in base64 (7.24.10) === &lt;br /&gt;
#optional first parameter: allextensionsallowed - default false&lt;br /&gt;
 StudioInterface.getPostedFilesInBase64();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of posted files in base64&lt;br /&gt;
&lt;br /&gt;
==== Convert posted Excel file to JSON array (since 7.25.02) ====&lt;br /&gt;
#optional parameter 1: object with possible properties: WorksheetName, OnlyUseStringType (when true, all values will be in string)&lt;br /&gt;
 StudioInterface.excelAsPostedFileToJson();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the JSON respresentation of the Excel file&lt;br /&gt;
&lt;br /&gt;
=== Get the current language culture === &lt;br /&gt;
 StudioInterface.getCurrentLanguageCulture();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the culture (nl-BE, en-GB, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language name === &lt;br /&gt;
 StudioInterface.getCurrentLanguageName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name (English, Nederlands, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the current language id === &lt;br /&gt;
 StudioInterface.getCurrentLanguageId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id (1, 2, …)&lt;br /&gt;
&lt;br /&gt;
=== Check if there is a logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.hasLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true or false&lt;br /&gt;
&lt;br /&gt;
=== Get the logged in person (7.21.07) === &lt;br /&gt;
 StudioInterface.getLoggedInPerson();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: object with properties id, firstname, lastname, email, uniqueid, description and inactive in JSON&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the logged in person (7.23.08) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the id of the account id that did the impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.getLoggedInViaImpersonationAccountId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id&lt;br /&gt;
&lt;br /&gt;
=== Get the field value for the current logged in person === &lt;br /&gt;
#first parameter: fieldname&lt;br /&gt;
 StudioInterface.getLoggedInPersonField(&#039;FirstName&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (Raymond, Dominic, …)&lt;br /&gt;
 Possible fields: UniqueId, FirstName, LastName, Email, all person extra fields defined in adapters.&lt;br /&gt;
&lt;br /&gt;
=== Get the first and last name for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonFirstAndLastName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the first and last name (Raymond Crijnen, Dominic De Vilder, …)&lt;br /&gt;
&lt;br /&gt;
=== Get the description as defined in the settings for the current logged in person === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDescription();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the description (Raymond Crijnen (raymond@smt-x.com - CrijnenR))&lt;br /&gt;
&lt;br /&gt;
=== Get the dateformat as defined for the current logged in person (7.22.06) === &lt;br /&gt;
 StudioInterface.getLoggedInPersonDateFormat();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the dateformat (dd/MM/yyyy)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has the specified role === &lt;br /&gt;
#first parameter: Role name&lt;br /&gt;
 StudioInterface.loggedInPersonHasRole(&#039;Name of the role&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has the role, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has any of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAnyRole([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has any of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is logged in via impersonation (7.25.05) === &lt;br /&gt;
 StudioInterface.isLoggedInViaImpersonation();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is logged in via impersonation, false otherwise&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person has all of the specified roles (7.21.08) === &lt;br /&gt;
#first parameter: array of role names&lt;br /&gt;
 StudioInterface.loggedInPersonHasAllRoles([&#039;Name of the role1&#039;, &#039;Name of the role2&#039;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user has all of the roles, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Checks if the logged in person is an admin (7.22.06) === &lt;br /&gt;
 StudioInterface.loggedInPersonIsAdmin();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the user is admin, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get a translation === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations&lt;br /&gt;
&lt;br /&gt;
=== Get a translation and add default value if missing (7.24.07) === &lt;br /&gt;
#first parameter: Category&lt;br /&gt;
#second parameter: Label&lt;br /&gt;
#third parameter: Default Value&lt;br /&gt;
 StudioInterface.translate(&#039;Common&#039;, &#039;Profile&#039;, &#039;My Profile&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the translation value for the SSP translations and if it doesn&#039;t exits yet, it will be added with the default value in the default language&lt;br /&gt;
&lt;br /&gt;
=== Get the root of the ssp location === &lt;br /&gt;
 StudioInterface.getSspRoot();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the http location, including the trailing slash (https:=== ssp/)&lt;br /&gt;
&lt;br /&gt;
=== Get the http path to the current application === &lt;br /&gt;
Returns the location of the studio app, in case the code is called from a http request, the http(s) location is not included, in case it&#039;s called from a studio task, the http(s) location is included&lt;br /&gt;
 StudioInterface.getApplicationPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the location, without the trailing slash (https://ssp/myapp or /myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application folder name (7.22.09) === &lt;br /&gt;
 StudioInterface.getApplicationFolder();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the name of the folder (eg myapp)&lt;br /&gt;
&lt;br /&gt;
=== Get the application id by folder name (7.25.08) === &lt;br /&gt;
 StudioInterface.getApplicationIdByFolderName(&amp;quot;myapp&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application (eg 15)&lt;br /&gt;
&lt;br /&gt;
=== Checks if the user has the &amp;quot;Use&amp;quot; right for a studio app (7.25.09) === &lt;br /&gt;
 StudioInterface.loggedInPersonHasStudioAppUseRights(id);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true of the logged in user has the use right, false otherwise&lt;br /&gt;
&lt;br /&gt;
=== Get the current folder name (full) inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentFolderName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full folder path, including the starting and trailing slash (/subfolder/content/)&lt;br /&gt;
&lt;br /&gt;
=== Get the current file name inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentName();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full path of the file inside the current application === &lt;br /&gt;
 StudioInterface.getCurrentPath();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current file name (/subfolder/content/index.html)&lt;br /&gt;
&lt;br /&gt;
=== Get the current full raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentFullRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url, eg /my-app/my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application raw url (since 7.23.04) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationRawUrl();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the current full raw url minues the application folder, eg /my-folder/my-file.txt&lt;br /&gt;
&lt;br /&gt;
=== Get the current application id (7.22.06) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationId();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the id of the application&lt;br /&gt;
&lt;br /&gt;
=== Get the ticks of the last modified date of the current application (7.23.02) === &lt;br /&gt;
 StudioInterface.getCurrentApplicationLastModifiedTicks();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the ticks of the last modified date of the application&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string === &lt;br /&gt;
#first parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsString(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders the application file as a string, passing thru the parameters to the rendering script === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
#second parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: string to be rendered&lt;br /&gt;
 StudioInterface.renderAsStringFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application as a string, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderAsStringWithParametersFromStudioApp(15, &#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered content (the parameters are accessible in the processing script of the file to render, use g_parameters)&lt;br /&gt;
&lt;br /&gt;
=== renders the application file and returns the rendered object === &lt;br /&gt;
#first parameter: Application file&lt;br /&gt;
 StudioInterface.render(&#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders the application file, passing thru the parameters to the rendering script === &lt;br /&gt;
 StudioInterface.renderWithParameters(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application and returns the rendered object (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
 StudioInterface.renderFromStudioApp(15, &#039;/subfolder/content/index.html&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object with these properties: action, content, contenttype, templatezones, templateparameters&lt;br /&gt;
&lt;br /&gt;
=== renders an application file in a studio application, passing thru the parameters to the rendering script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Application file&lt;br /&gt;
#third parameter: object with parameters&lt;br /&gt;
 StudioInterface.renderWithParametersFromStudioApp(&#039;/subfolder/content/index.html&#039;, { &#039;Title&#039;: &#039;My title&#039;, &#039;Summary&#039;: &#039;My summary&#039; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the rendered object (see .render for details)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValue(&#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application variable, passing thru the parameters to the variable script === &lt;br /&gt;
#first parameter: Variable name&lt;br /&gt;
#second parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParameters(&#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
 StudioInterface.getVariableValueFromStudioApp(15, &#039;my variable&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application variable in a studio application, passing thru the parameters to the variable script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Variable name&lt;br /&gt;
#third parameter: object with parameters (passed through to the variable script)&lt;br /&gt;
 StudioInterface.getVariableValueWithParametersFromStudioApp(15, &#039;my custom variable function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the variable)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValue(&#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for the application setting, passing thru the parameters to the setting script (7.24.12) === &lt;br /&gt;
#first parameter: Setting name&lt;br /&gt;
#second parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParameters(&#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
 StudioInterface.getSettingValueFromStudioApp(15, &#039;my setting&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Get the value for an application setting in a studio application, passing thru the parameters to the setting script (7.25.08) === &lt;br /&gt;
#first parameter: Application id&lt;br /&gt;
#second parameter: Setting name&lt;br /&gt;
#third parameter: object with parameters (passed through to the setting script)&lt;br /&gt;
 StudioInterface.getSettingValueWithParametersFromStudioApp(15, &#039;my custom setting function&#039;, { &#039;Number&#039;: 8 });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (type is depending on the setting)&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task to run on the next SSP Scheduler run (7.23.07) === &lt;br /&gt;
#first parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRun(&#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Schedule a studio task in a studio application to run on the next SSP Scheduler run (7.25.08) === &lt;br /&gt;
#first parameter: application id&lt;br /&gt;
#second parameter: name of the task&lt;br /&gt;
 StudioInterface.scheduleStudioTaskToRunOnNextSchedulerRunFromStudioApp(15, &#039;my task&#039;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
=== Views (7.22.06) ===&lt;br /&gt;
==== getViewCountByName ====&lt;br /&gt;
Get the count of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountByName (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s name only by fetching it from the cache&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewCountByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if it&#039;s found in the cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewCountById ====&lt;br /&gt;
Get the count of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#optional second parameter can be an object with properties &amp;quot;GetFromSource&amp;quot; or &amp;quot;AllowDbAccess&amp;quot;&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view&lt;br /&gt;
&lt;br /&gt;
==== getCachedViewCountById (7.24.07) ====&lt;br /&gt;
Get the count of a view by it&#039;s id only by fetching it from the cache&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewCountById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the count of the view if found in cache, null otherwise&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByName ====&lt;br /&gt;
Get the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
 StudioInterface.getViewDataByName(&amp;quot;view1&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByName (7.22.08) ====&lt;br /&gt;
Search the data of a view by it&#039;s name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName(&amp;quot;view1&amp;quot;, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByNames ====&lt;br /&gt;
Get the data of multiple views by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
 StudioInterface.getViewDataByNames([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByNames (7.22.08) ====&lt;br /&gt;
Search the data of a view by their names&lt;br /&gt;
#first parameter is an array of the name of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([&amp;quot;view1&amp;quot;, &amp;quot;view2&amp;quot;], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsByName ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views name&lt;br /&gt;
#first parameter is the name of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsByName(&amp;quot;view1&amp;quot;, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataById ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
 StudioInterface.getViewDataById(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the view in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataById (7.22.08) ====&lt;br /&gt;
Get the data of a view by it&#039;s id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataById(1, [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataByIds ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
 StudioInterface.getViewDataByIds([1, 2]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the views in JSON&lt;br /&gt;
 &lt;br /&gt;
==== searchViewDataByIds (7.22.08) ====&lt;br /&gt;
Get the data of multiple views by their ids&lt;br /&gt;
#first parameter is an array of ids of the views&lt;br /&gt;
#second parameter is an array of objects with possible properties: FieldName, FilterOperator and FilterValue. Possible FilterOperators are: Contains, DoesNotContain, StartsWith, EndsWith, EqualTo, NotEqualTo, EqualToNum, NotEqualToNum, GreaterThanNum, LessThanNum, BetweenNum, GreaterThanDate, LessThanDate, BetweenDate, EqualToDate, NotEqualToDate, ContainsAny, ContainsAnyNum. Update since 7.23.05: extra possible property: Connector and Filters, extra FilterOperator: SubFilter&lt;br /&gt;
#optional third parameter is an object with properties PageIndex, PageSize, OrderBy&lt;br /&gt;
 StudioInterface.searchViewDataByName([1, 2], [ { FieldName: &amp;quot;field1&amp;quot;, FilterOperator: &amp;quot;NotEqualTo&amp;quot;, FilterValue: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the data of the search results in JSON&lt;br /&gt;
&lt;br /&gt;
==== getViewDataForTicketsById ====&lt;br /&gt;
Search for tickets and get the results back as defined in the view by the views id&lt;br /&gt;
#first parameter is the id of the view&lt;br /&gt;
#second parameter is an object with the search predicates (possible properties are &amp;quot;CustomKey&amp;quot;, &amp;quot;Id&amp;quot;, &amp;quot;Status&amp;quot;, &amp;quot;Keywords&amp;quot;, &amp;quot;RequestorId&amp;quot;, &amp;quot;DateStartedFrom&amp;quot;, &amp;quot;DateStartedTo&amp;quot;, &amp;quot;DateEndedFrom&amp;quot;, &amp;quot;DateEndedTo&amp;quot;)&lt;br /&gt;
#optional third parameter is an object with the paging settings&lt;br /&gt;
 StudioInterface.getViewDataForTicketsById(1, { &amp;quot;Status&amp;quot;: &amp;quot;Open&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the tickets formatted as defined in the view in JSON&lt;br /&gt;
&lt;br /&gt;
=== Quick Requests (7.24.07) ===&lt;br /&gt;
==== Get the quick requests ====&lt;br /&gt;
Get all the quick requests&lt;br /&gt;
 CommonInterface.getQuickRequests();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the quick requests SECURE ====&lt;br /&gt;
Get the quick requests for the logged in user&lt;br /&gt;
 CommonInterface.getQuickRequestsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of object with properties id, typeid, typename, iconurl, cssclass, name and url in JSON&lt;br /&gt;
&lt;br /&gt;
== Service Catalog Interface ==&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get the details of a template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the template&lt;br /&gt;
#optional second parameter: options with possible properties: LanguageId, PartsAsFlatList&lt;br /&gt;
 ServiceCatalogInterface.getTemplateDetail(templateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the details of the template in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get the convert message when changing the template (7.25.09) ====&lt;br /&gt;
#first parameter: the guid of the source template&lt;br /&gt;
#second parameter: the guid of the target template&lt;br /&gt;
 ServiceCatalogInterface.getConvertToTemplateMessages(sourcetemplateguid, targettemplateguid);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the changes that will be done when converting a service from template A to template B in JSON&lt;br /&gt;
&lt;br /&gt;
==== Rebuild the search indexes (7.23.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
 ServiceCatalogInterface.rebuildSearchIndexes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get the quality note types (7.23.07) ====&lt;br /&gt;
#optional first parameters is an object possible key LanguageId&lt;br /&gt;
 ServiceCatalogInterface.getQualityNoteTypes();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of objects with properties guid, canselectreviewcycle and name&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service publication request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServicePublicationRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Get the hashcheck for a service review cycle request (7.25.03) ====&lt;br /&gt;
#first parameters is the serviceguid&lt;br /&gt;
#second parameters is the request guid&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycleRequestHashCheck(&amp;quot;abc&amp;quot;, &amp;quot;def&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the hashcheck&lt;br /&gt;
&lt;br /&gt;
=== Published versions ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecordsSecure({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published records (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all published records ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published records by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns published records (services and knowledge articles) that matches the search conditions, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ tag: &amp;quot;bike&amp;quot; });&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedRecords({ anytag: [&amp;quot;bike&amp;quot;,&amp;quot;auto&amp;quot;], name_contains: &amp;quot;transport&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServicesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published services (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published services ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published services by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedServices({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count of all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticlesSecure({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all published knowledge articles (7.21.07) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all published knowledge articles ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex (7.21.07) or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns the count all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of published knowledge articles by searching (7.21.07) ====&lt;br /&gt;
#first parameter: object with properties template, type, tag, anytag, alltags, name, name_contains, provider, receiver, provider_startswith, receiver_startswith, owner, ownerdeputy, manager or ownerorownerdeputyormanager&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all published knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchListPublishedKnowledgeArticles({tag: &amp;quot;bike&amp;quot;});&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently published knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service summary ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services summary ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services summary (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service details ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#optional first parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure published service part values (7.21.07) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getPublishedServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all published services part values (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all published services details (7.21.07) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllPublishedServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Search published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearch(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of text to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039;, serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearch(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using text search (with Lucene) (7.21.11) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the text to search (allows for * and ?) (since 7.23.12: can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textSearchSecure(1, &amp;quot;how to ride a bike&amp;quot;, { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An object with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results) and since 7.23.12: &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search secure published services using multiple texts search (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of texts to search (allows for * and ?) (can be null, then no text filter is set, usefull when using &#039;serviceguid(s)&#039; in optional third parameter)&lt;br /&gt;
#optional third parameter: object with properties &#039;itemsperpage&#039; (default 100), &#039;after&#039; (pass the object &#039;lastinfo&#039; from the previous search result), &#039;escapesearchtext&#039;, &#039;templatename&#039;, &#039;templatetype&#039;, &#039;servicetype&#039; and since 7.23.12: serviceguid, name, summary, owner, ownerdeputy, manager, tag, provider, receiver, documentname, requestname, part, includesuggestions&lt;br /&gt;
#security: this function returns all published services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSecure(1, [&amp;quot;how to ride a bike&amp;quot;, &amp;quot;how to drive a car&amp;quot;], { templatetype: &amp;quot;Knowledge_article&amp;quot; });&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter with objects with properties &#039;totalhits&#039; (total amount of hits), &#039;entries&#039; (array of search result entries containing possibly the following data: guid, name, summary, servicetype, templatename, templatetype and since 7.23.12: dataobject, owner, ownerdeputy, manager, tags, provider, receivers, documentnames, documents, requestnames, requests, parts), &#039;lastinfo&#039; (contains the needed info to fetch the next batch of results), &#039;suggestions&#039; (array of objects with properties: text, totalhits)&lt;br /&gt;
&lt;br /&gt;
==== Search for word suggestions based on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the word the search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
&lt;br /&gt;
 ServiceCatalogInterface.textSearchSuggestSimilar(1, &amp;quot;artilce&amp;quot;);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  A json encoded array of suggestions (string)&lt;br /&gt;
&lt;br /&gt;
==== Search for multiple word suggestions bsaed on published services (with Lucene) (7.23.12) ====&lt;br /&gt;
#first parameter: language id&lt;br /&gt;
#second parameter: the array of words to search suggestions for&lt;br /&gt;
#optional third parameter: object with properties &#039;nrofresults&#039; (default 5)&lt;br /&gt;
 ServiceCatalogInterface.textsSearchSuggestSimilar(1, [&amp;quot;artilce&amp;quot;, &amp;quot;atricle&amp;quot;]);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of the same size as the second input parameter of arrays with suggestions (string)&lt;br /&gt;
 &lt;br /&gt;
=== Service versions ===&lt;br /&gt;
 &lt;br /&gt;
==== Get service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverview(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionOverviewSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummary(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionSummarySecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetail(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
==== Get secure service version details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: versionnumber&lt;br /&gt;
#optional third parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVersionDetailSecure(guid, versionnumber)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid and versionnumber&lt;br /&gt;
&lt;br /&gt;
=== Services ===&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.getAllRecordsSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllRecords();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all services (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all services (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServices();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count of all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticlesSecure();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all knowledge articles (7.21.12) ====&lt;br /&gt;
#no parameters&lt;br /&gt;
#security: this function returns the count all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getCountKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get list of all knowledge articles (7.21.12) ====&lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllKnowledgeArticles();&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get secure count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles) and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Get secure list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles) and checks the current user security profile for all returning authorized records&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecordsSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get count of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number &lt;br /&gt;
&lt;br /&gt;
==== Get list of all records (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all records based on the search criteria (services and knowledge articles), without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllRecords(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently records, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServicesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all services (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all services based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllServices(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently services, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
 &#039;&#039;example criteria&#039;&#039;: { templatename: [&amp;quot;Template 1&amp;quot;, &amp;quot;Template 2&amp;quot;] }&lt;br /&gt;
 &#039;&#039; available criteria: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06)&lt;br /&gt;
&lt;br /&gt;
==== Search secure count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count of all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search secure list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria and checks the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticlesSecure(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles for which the current user is authorized, containing the following data: serviceid, serviceguid, versionnumber, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Search count of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#security: this function returns the count all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchCountKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: number&lt;br /&gt;
&lt;br /&gt;
==== Search list of all knowledge articles (7.22.04) ====&lt;br /&gt;
#first parameter: object with search criteria (possible keys: hasexpiredreviewcycle, reviewcyclevalidityenddateuntil, servicetypes, templatenames, templatetypes, ispublished(7.24.06))&lt;br /&gt;
#optional second parameter: object with properties itemsperpage and pageindex or languageid (7.22.08)&lt;br /&gt;
#security: this function returns all knowledge articles based on the search criteria, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.searchAllKnowledgeArticles(searchcriteria);&lt;br /&gt;
 &#039;&#039;return&#039;&#039;:  An array of all currently knowledge articles, containing the following data: serviceid, serviceguid, versionnumber, template guid, template name, template hide in public, template typeid, phase id, phase name, phase typeid (since 7.24.03), phase typename (since 7.24.03), servicetypeid, servicetypename, name of service, description, summary, providers, receivers, owner, ownerdeputy, servicemanager.&lt;br /&gt;
&lt;br /&gt;
==== Get service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverview(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure service overview (7.24.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceOverviewSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverview([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverview()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services overview (7.24.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesOverviewSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services overview (7.24.02) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId&lt;br /&gt;
#security: Returns a overview of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesOverviewSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns&lt;br /&gt;
&lt;br /&gt;
==== Get service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummary(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure service summary (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceSummarySecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummary([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummary()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services summary (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesSummarySecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services summary (7.21.12) ==== &lt;br /&gt;
#optional first parameter: object with LanguageId (7.22.08) - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns a summary of the service and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesSummarySecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing the same fields as the list method returns + icon, banner, list of parent service guids, list of child service guids and list of knowledge article guids, editorpersons, editorpersongroups, technicalapprovalpersons, technicalapprovalpersongroups, customerapprovalpersons and customactors&lt;br /&gt;
&lt;br /&gt;
==== Get service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetail(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
 Please note that there is an optional parameter to retrieve the service details in a specific languange. Use this: ServiceCatalogInterface.getServiceDetail(guid, { LanguageId: 1 }) to get the service details in the language English. (1=English, 2=Dutch, 3=French, 4=German).&lt;br /&gt;
&lt;br /&gt;
==== Get secure service details (7.21.12) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceDetailSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all fields, including template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetail([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetail()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services details (7.21.12) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesDetailSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services details (7.21.12) ==== &lt;br /&gt;
#optional second parameter: object with properties:&lt;br /&gt;
 - SelectionFieldsUseKeys (true = return keys instead of display value) (7.21.07)&lt;br /&gt;
 - LanguageId (id of the language to use) (7.22.03)&lt;br /&gt;
 - PartsAsFlatList (true = return array of parts instead of array of tabs with array of parts) (7.22.04)&lt;br /&gt;
 - BBCodeFieldsUseValue (true = return bb code instead of html) (7.22.10)&lt;br /&gt;
 - PartsUseValue (default value for SelectionFieldsUseKeys and BBCodeFieldsUseValue) (7.22.10)&lt;br /&gt;
 - since 7.23.05: LoadRelations, LoadParents, LoadChildren&lt;br /&gt;
#security: Returns all service details and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDetailSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: an array with services containing all fields, including template fields&lt;br /&gt;
&lt;br /&gt;
=== Service parts ===&lt;br /&gt;
&lt;br /&gt;
==== Get service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceParts(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service part values (7.22.02) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicePartsSecure(guid, [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesParts([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#second parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesPartsSecure([guid1, guid2], [&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesParts([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services part values (7.22.02) ==== &lt;br /&gt;
#first parameter: array of internal names of the parts (pass null to get all parts)&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all part values for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesPartsSecure([&amp;quot;part1&amp;quot;, &amp;quot;part2&amp;quot;])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: template fields&lt;br /&gt;
&lt;br /&gt;
=== Service documents (7.25.09) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service document secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Only returns the document when the user has the rights to view it&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentSecure(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Get service document (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#second parameter: documentguid&lt;br /&gt;
#optional third parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Always returns the document&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocument(serviceguid, documentguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocumentsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get service documents (7.25.09) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the service&lt;br /&gt;
 ServiceCatalogInterface.getServiceDocuments(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents secure (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocumentsSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services documents (7.25.09) ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of the services&lt;br /&gt;
 ServiceCatalogInterface.getServicesDocuments([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents secure (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services that the user is allowed to see&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocumentsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all services documents (7.25.09) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue), languageid&lt;br /&gt;
#security: Returns all documents of all services&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesDocuments()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all the document info in JSON&lt;br /&gt;
&lt;br /&gt;
=== Service relations (7.24.02) ===&lt;br /&gt;
&lt;br /&gt;
==== Get service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelation(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relation ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#second parameter: child serviceguid&lt;br /&gt;
#optional third parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the relation and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationSecure(parentserviceguid, childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParent(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as parent ==== &lt;br /&gt;
#first parameter: parent serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsParentSecure(parentserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParent([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as parent ==== &lt;br /&gt;
#first parameter: array of parent serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsParentSecure([parentserviceguid1, parentserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChild(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations as child ==== &lt;br /&gt;
#first parameter: child serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsAsChildSecure(childserviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChild([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations as child ==== &lt;br /&gt;
#first parameter: array of child serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsAsChildSecure([childserviceguid1, childserviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelations(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get secure service relations ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the parent or child and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceRelationsSecure(serviceguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get multiple service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelations([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get multiple secure service relations ==== &lt;br /&gt;
#first parameter: array of serviceguids&lt;br /&gt;
#optional second parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations where the service guid is the child or the parent and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesRelationsSecure([serviceguid1, serviceguid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
==== Get all service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelations()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
 &lt;br /&gt;
==== Get all secure service relations ==== &lt;br /&gt;
#optional first parameter: object with properties languageid, selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (true = return bb code instead of html), partsusevalue (default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all relations and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesRelationsSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the relation as an object (properties: parentserviceid, parentserviceguid, childserviceid, childserviceguid, parts (array of objects))&lt;br /&gt;
&lt;br /&gt;
=== Review cycles ===&lt;br /&gt;
&lt;br /&gt;
==== Get service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCycles(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get secure service review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: serviceguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceReviewCyclesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guid&lt;br /&gt;
&lt;br /&gt;
==== Get multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple services review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with serviceguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles for the given service guids&lt;br /&gt;
&lt;br /&gt;
==== Get all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCycles()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure all services review cycles (7.22.04) ==== &lt;br /&gt;
#optional first parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles for all services and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getAllServicesReviewCyclesSecure()&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: all review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get review cycle (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycle(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get secure review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: reviewcycleguid&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns the review cycle and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycleSecure(reviewcycleguid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycle&lt;br /&gt;
&lt;br /&gt;
==== Get multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles, without checking the current user security profile&lt;br /&gt;
 ServiceCatalogInterface.getReviewCycles([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
==== Get secure multiple review cycles (7.22.04) ==== &lt;br /&gt;
#first parameter: array with reviewcycleguids&lt;br /&gt;
#optional second parameter: object with property selectionfieldsusekeys (true = return keys instead of display value), bbcodefieldsusevalue (7.22.10, true = return bb code instead of html), usevalue (7.22.10, default value for selectionfieldsusekeys and bbcodefieldsusevalue)&lt;br /&gt;
#security: Returns all review cycles and checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getReviewCyclesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the review cycles&lt;br /&gt;
&lt;br /&gt;
=== Service variables ===&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValueSecure(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Get service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariableValue(guid, variablename)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: the value (string)&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValueSecure(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Set service variable value (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: variable name&lt;br /&gt;
#third parameter: variable value&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.setServiceVariableValue(guid, variablename, variablevalue)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Get service variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariablesSecure(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get service variables (7.22.07) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServiceVariables(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables secure (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: Checks if the current user is authorized to retrieve these details (at least read rights)&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariablesSecure([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
==== Get services variables (7.22.07) ==== &lt;br /&gt;
#first parameter: array of service guids&lt;br /&gt;
#security: No checks are done&lt;br /&gt;
 ServiceCatalogInterface.getServicesVariables([guid1, guid2])&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: array of variables in JSON (properties: serviceguid, name, value)&lt;br /&gt;
&lt;br /&gt;
=== Rights ===&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin rights (7.23.03) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has at least view rights in the admin panel for this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has service admin edit rights (7.23.03) ==== &lt;br /&gt;
Since 7.23.11: warning - will be removed in a future version&lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceAdminEditRights(guid)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has edit rights in the admin panel for this service, false otherwise&lt;br /&gt;
 &#039;&#039;return since 7.23.11&#039;&#039;: always false, please use custom ACLs instead&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service custom ACL use right (7.23.11) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceCustomAclUseRight(guid, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
==== Check if the logged in person has a service version custom ACL use right (7.24.10) ==== &lt;br /&gt;
#first parameter: service guid&lt;br /&gt;
#second parameter: version number&lt;br /&gt;
#thirdparameter: name of the custom ACL&lt;br /&gt;
 ServiceCatalogInterface.loggedInPersonHasServiceVersionCustomAclUseRight(serviceguid, versionnr, name)&lt;br /&gt;
 &#039;&#039;return&#039;&#039;: true if the person has the use right for the ACL in this service, false otherwise&lt;br /&gt;
&lt;br /&gt;
== FormsInterface (7.22.06) ==&lt;br /&gt;
The FormsInterface contains function that interact with request forms&lt;br /&gt;
&lt;br /&gt;
WARNING: the non-secure versions of the interface behave like secure until 7.22.09&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== List categories ====&lt;br /&gt;
Returns the categories&lt;br /&gt;
 FormsInterface.getCategories();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== List categories SECURE (7.22.09) ====&lt;br /&gt;
Returns the categories based on the logged in user&lt;br /&gt;
 FormsInterface.getCategoriesSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, title, description, helptext in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category ====&lt;br /&gt;
Gets a category based on the id&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategory(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get category SECURE (7.22.09) ====&lt;br /&gt;
Gets a category based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: category id&lt;br /&gt;
 FormsInterface.getCategorySecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties islive, title and topics (array of objects with properties id, islive, iconurl, title, description, helptext) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic ====&lt;br /&gt;
Gets a topic based on the id&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopic(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get topic SECURE (7.22.09) ====&lt;br /&gt;
Gets a topic based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: topic id&lt;br /&gt;
 FormsInterface.getTopicSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, title, islive and forms (array of objects with properties id, islive, onlyindirectlyaccessible, contenttypeid, iconurl, title, description), subnavcssclass (since 7.23.10) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics (7.24.07) ====&lt;br /&gt;
Gets all topics&lt;br /&gt;
 FormsInterface.getAllTopics();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get all topics SECURE (7.24.07) ====&lt;br /&gt;
Gets all topics where the logged in user has rights for&lt;br /&gt;
 FormsInterface.getAllTopicsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, title, iconurl, description, helptext, subnavcssclass, categoryid in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form ====&lt;br /&gt;
Gets a form based on the id&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getForm(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get form SECURE (7.22.09) ====&lt;br /&gt;
Gets a form based on the id, only if the logged in user has rights for this&lt;br /&gt;
#first parameter: form id&lt;br /&gt;
 FormsInterface.getFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get favorite forms SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of favorite forms&lt;br /&gt;
 FormsInterface.getFavoriteFormsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties categoryid, categorytitle, categoryislive, topicid, topictitle, topicislive, id, islive, title, description, showaddtofavorites (7.22.07), showsaveasdraft(7.22.07), showsaveastemplate(7.22.07), onlyindirectlyaccessible (7.22.10), hasadmin, isfavorite and iconurl (7.24.07) and showselectotheruser (7.24.12) in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove favorite form SECURE (7.22.09) ====&lt;br /&gt;
Removes a form from the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.removeFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Add favorite form SECURE (7.22.09) ====&lt;br /&gt;
Adds a form to the persons favorites&lt;br /&gt;
#first parameter: id of the form&lt;br /&gt;
 FormsInterface.addFavoriteFormSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
 &lt;br /&gt;
==== Get form instances SECURE (7.22.09) ====&lt;br /&gt;
Gets the list of form instances for the logged in user based on type/status (Draft or Template)&lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
 FormsInterface.getFormInstancesSecure(&amp;quot;Draft&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, extraparameters, formid, formtitle, instancetitle, dateaddedticks, dateadded in JSON&lt;br /&gt;
 &lt;br /&gt;
==== Remove form instance SECURE (7.22.09) ====&lt;br /&gt;
Removes a form instance only if the logged in user owns the form instance &lt;br /&gt;
#first parameter: the string &amp;quot;Draft&amp;quot; or &amp;quot;Template&amp;quot;&lt;br /&gt;
#second parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstanceSecure(&amp;quot;Draft&amp;quot;, 1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Search forms and shops SECURE (7.22.09) ====&lt;br /&gt;
Returns the forms and shops based on the text&lt;br /&gt;
#first parameter: text to search for&lt;br /&gt;
#optional second parameter: max records to return (default = 10)&lt;br /&gt;
 FormsInterface.searchFormsAndShopsSecure(&amp;quot;phone&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search count forms (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search count forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the number of forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible property: languageid&lt;br /&gt;
 FormsInterface.searchCountFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the number&lt;br /&gt;
&lt;br /&gt;
==== Search forms (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchForms({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Search forms SECURE (7.23.08) ====&lt;br /&gt;
Returns the forms that matches the criteria&lt;br /&gt;
#first parameter: object with possible properties: isretired, internallabel, internallabeloperator, name, nameoperator&lt;br /&gt;
#optional second parameter: object with possible properties: languageid, itemsperpage, pageindex&lt;br /&gt;
 FormsInterface.searchFormsSecure({ internallabel: &amp;quot;phone&amp;quot;, internallabeloperator: &amp;quot;contains&amp;quot; });&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, typename, title, topictitle, categorytitle, iconurl, internallabel in JSON&lt;br /&gt;
&lt;br /&gt;
==== Remove form instance (7.22.09) ====&lt;br /&gt;
Removes a form instance&lt;br /&gt;
#first parameter: id of the form instance&lt;br /&gt;
 FormsInterface.removeFormInstance(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nothing&lt;br /&gt;
&lt;br /&gt;
==== Add form instance (7.22.09) ====&lt;br /&gt;
Adds a form instance&lt;br /&gt;
#first parameter: form (can be the id of the form, or the internal label of the form)&lt;br /&gt;
#second parameter: requestor person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#third parameter: requested for person (can be the id of the person, or the unique id or email of the person)&lt;br /&gt;
#fourth parameter: title of the instance&lt;br /&gt;
#fifth parameter: array of initial form values (array of objects with possible properties displayvalue, value, internallabel, form, field, fieldid, repeatablesectionfieldid, repeatablesectionindex, label, labels (object with possible properties label, languageid, language))&lt;br /&gt;
#optional sixth parameter: status (Draft or Template)&lt;br /&gt;
 FormsInterface.addFormInstance(&amp;quot;first form&amp;quot;, &amp;quot;john@doe.com&amp;quot;, &amp;quot;lisa@doe.com&amp;quot;, &amp;quot;new draft&amp;quot;, [ { internallabel: &amp;quot;first field&amp;quot;,  value: &amp;quot;test&amp;quot; } ]);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: the id of the form instance&lt;br /&gt;
&lt;br /&gt;
==== List views (7.22.10) ====&lt;br /&gt;
Returns the views&lt;br /&gt;
 FormsInterface.getViews();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== List views SECURE (7.22.10) ====&lt;br /&gt;
Returns the views based on the logged in user&lt;br /&gt;
 FormsInterface.getViewsSecure();&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON&lt;br /&gt;
&lt;br /&gt;
==== Get view (7.22.10) ====&lt;br /&gt;
Returns the view with the id&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getView(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view SECURE (7.22.10) ====&lt;br /&gt;
Returns the view with the id only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the id of the view&lt;br /&gt;
 FormsInterface.getViewSecure(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name (7.25.01) ====&lt;br /&gt;
Returns the view with the name&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByName(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
==== Get view by name SECURE (7.25.01) ====&lt;br /&gt;
Returns the view with the name only if the logged in user has rights for the view&lt;br /&gt;
#first parameter: the name of the view&lt;br /&gt;
 FormsInterface.getViewByNameSecure(&amp;quot;name&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, islive, iconurl, useinadvancedviewfiltering, opendetailinnewwindow, defaultopentypeid, defaultopentypename, cssclass, alwaysopeninfullscreen, hidewhencountiszero, allowhidecolumns, width, widthfullscreen, name, description, shortname in JSON. Update since 7.23.05: extra property: fields, array of objects with properties sourcecolumn, name, fieldtypeid, fieldtypename, showindefault, showinextended, htmlencode, iskey, width, defaultsort, dateformat, filtertypeid, filtertypename, filterparametername, filterparametervaluefield, filterparameterdisplayfield&lt;br /&gt;
&lt;br /&gt;
== KnowledgeManagementInterface (7.22.11) ==&lt;br /&gt;
The KnowledgeManagementInterface contains function that interact with knowledge base articles and nodes&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
==== Get elements by parent id ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentId(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get elements by parent id SECURE ====&lt;br /&gt;
#first parameter: parent id (can be null)&lt;br /&gt;
 KnowledgeManagementInterface.getElementsByParentIdSecure(null);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElement(1);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
 &lt;br /&gt;
==== Get element by id SECURE ====&lt;br /&gt;
#first parameter: id&lt;br /&gt;
 KnowledgeManagementInterface.getElementSecure(1);&lt;br /&gt;
  &#039;&#039;returns&#039;&#039;: object with properties id, parentid, contenttypeid, contenttypename, iconurl, title, description, statusid, statusname, ispublic, content, documents (array of objects with properties filename, title, link), links (array of objects with properties url, title, linktypeid, linktypename), forms (array of objects with properties id, iconurl, title, description, topicid, topictitle, categoryid, categorytitle, linktypeid, linktypename), children (array of objects with same properties as getElementsByParentId)&lt;br /&gt;
&lt;br /&gt;
==== Search count ====&lt;br /&gt;
Returns the number of elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCount(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search count SECURE ====&lt;br /&gt;
Returns the number of elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
 KnowledgeManagementInterface.searchCountSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: nr of elements found&lt;br /&gt;
&lt;br /&gt;
==== Search ====&lt;br /&gt;
Returns the elements based on the search criteria without checking the current logged in user&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.search(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;br /&gt;
&lt;br /&gt;
==== Search SECURE ====&lt;br /&gt;
Returns the elements based on the search criteria where the logged in user has rights for&lt;br /&gt;
#first parameter: the search term&lt;br /&gt;
#optional second parameter: object with paging info (properties: ItemsPerPage, PageIndex) - default is 10 records&lt;br /&gt;
 KnowledgeManagementInterface.searchSecure(&amp;quot;test&amp;quot;);&lt;br /&gt;
 &#039;&#039;returns&#039;&#039;: array of objects with properties elementid, title, content (part where the search term is found)&lt;/div&gt;</summary>
		<author><name>Smtxwiki</name></author>
	</entry>
</feed>